blob: e2992c96b1a411a84540800c697c2ea2c3523466 [file] [log] [blame]
{"version":3,"file":"static/js/chunk-vendors.0e4312f0.js","mappings":"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CV,OAAU,MACV,KAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,KAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,SACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,SACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,SACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,SACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,QACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,QACV,OAAU,MACV,OAAU,cACV,OAAU,SACV,OAAU,UACV,OAAU,QACV,OAAU,SACV,OAAU,SACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,QACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,UACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,UACV,OAAU,UACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,QACV,OAAU,QACV,OAAU,OACV,OAAU,QACV,OAAU,QACV,OAAU,SACV,OAAU,SACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,QACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,QACV,OAAU,OACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,MAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,SACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,KAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,UACV,OAAU,YACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,WACV,OAAU,UACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,cACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,UACV,OAAU,UACV,OAAU,YACV,OAAU,YACV,OAAU,MACV,IAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,aACV,OAAU,aACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,aACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,WACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,YACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,YACV,OAAU,eACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,WACV,OAAU,UACV,OAAU,YACV,OAAU,gBACV,OAAU,aACV,OAAU,eACV,OAAU,WACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,kBACV,OAAU,YACV,OAAU,UACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,aACV,OAAU,MACV,OAAU,UACV,OAAU,QACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,KAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,aACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,SACV,OAAU,kBACV,OAAU,MACV,MAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,WACV,OAAU,MACV,OAAU,UACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,WACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,aACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,WACV,OAAU,QACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,QACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,QACV,OAAU,WACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,QACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,MAAU,cACV,OAAU,OACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,cACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,MAAU,WACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,YACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,aACV,OAAU,MACV,OAAU,QACV,OAAU,OACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,OACV,OAAU,OACV,OAAU,QACV,OAAU,OACV,KAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,OACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,OAAU,MACV,KAAU,UACV,OAAU,MACV,OAAU,MACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,OACV,OAAU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I1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnhL,EAAQD,EAASohL,GAI1B,EAED;;;;8BAKA,SAAUnh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","sources":["webpack://dubbo-admin-ui/./node_modules/vue-echarts/components/ECharts.vue?d85d","webpack://dubbo-admin-ui/./node_modules/resize-detector/esm/index.js","webpack://dubbo-admin-ui/node_modules/vue-echarts/components/ECharts.vue","webpack://dubbo-admin-ui/./node_modules/vue-echarts/components/ECharts.vue?c4dd","webpack://dubbo-admin-ui/./node_modules/vue-echarts/components/ECharts.vue","webpack://dubbo-admin-ui/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://dubbo-admin-ui/./node_modules/axios/index.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/adapters/xhr.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/axios.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/cancel/Cancel.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/cancel/CancelToken.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/cancel/isCancel.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/Axios.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/InterceptorManager.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/createError.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/dispatchRequest.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/enhanceError.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/settle.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/core/transformData.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/defaults.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/bind.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/buildURL.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/combineURLs.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/cookies.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/helpers/spread.js","webpack://dubbo-admin-ui/./node_modules/axios/lib/utils.js","webpack://dubbo-admin-ui/./node_modules/base64-js/index.js","webpack://dubbo-admin-ui/./node_modules/buffer/index.js","webpack://dubbo-admin-ui/./node_modules/clipboard/dist/clipboard.js","webpack://dubbo-admin-ui/./node_modules/clipboard/dist/clipboard.min.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/CoordinateSystem.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/ExtensionAPI.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line/LineView.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line/helper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/chart/line/poly.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axis.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axis/axisSplitHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/dataset.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/gridSimple.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/title.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/tooltip.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/config.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/Axis.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/axisDefault.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/axisHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/axisModelCreator.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/geo/Region.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/DataDiffer.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/List.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/Source.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/data/helper/sourceType.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/echarts.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/export.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/helper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/lang.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/layout/barGrid.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/layout/points.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/loading/default.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/Component.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/Global.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/Model.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/OptionManager.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/Series.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/globalDefault.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/model/referHelper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/processor/dataSample.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/processor/dataStack.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/Interval.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/Log.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/Ordinal.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/Scale.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/Time.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/scale/helper.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/stream/Scheduler.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/stream/task.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/theme/dark.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/theme/light.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/clazz.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/component.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/format.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/graphic.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/layout.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/model.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/number.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/symbol.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/util/throttle.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/view/Chart.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/view/Component.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/visual/aria.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/visual/seriesColor.js","webpack://dubbo-admin-ui/./node_modules/echarts/lib/visual/symbol.js","webpack://dubbo-admin-ui/./node_modules/esprima/dist/esprima.js","webpack://dubbo-admin-ui/./node_modules/http-status/lib/index.js","webpack://dubbo-admin-ui/./node_modules/ieee754/index.js","webpack://dubbo-admin-ui/./node_modules/is-buffer/index.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/index.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/common.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/dumper.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/exception.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/loader.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/mark.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema/core.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema/default_full.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/schema/json.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/binary.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/bool.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/float.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/int.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/js/function.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/map.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/merge.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/null.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/omap.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/pairs.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/seq.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/set.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/str.js","webpack://dubbo-admin-ui/./node_modules/js-yaml/lib/js-yaml/type/timestamp.js","webpack://dubbo-admin-ui/./node_modules/jsoneditor/dist/jsoneditor-minimalist.js","webpack://dubbo-admin-ui/./node_modules/lodash/_Hash.js","webpack://dubbo-admin-ui/./node_modules/lodash/_ListCache.js","webpack://dubbo-admin-ui/./node_modules/lodash/_Map.js","webpack://dubbo-admin-ui/./node_modules/lodash/_MapCache.js","webpack://dubbo-admin-ui/./node_modules/lodash/_Symbol.js","webpack://dubbo-admin-ui/./node_modules/lodash/_arrayMap.js","webpack://dubbo-admin-ui/./node_modules/lodash/_assignValue.js","webpack://dubbo-admin-ui/./node_modules/lodash/_assocIndexOf.js","webpack://dubbo-admin-ui/./node_modules/lodash/_baseAssignValue.js","webpack://dubbo-admin-ui/./node_modules/lodash/_baseGetTag.js","webpack://dubbo-admin-ui/./node_modules/lodash/_baseIsNative.js","webpack://dubbo-admin-ui/./node_modules/lodash/_baseSet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_baseToString.js","webpack://dubbo-admin-ui/./node_modules/lodash/_castPath.js","webpack://dubbo-admin-ui/./node_modules/lodash/_coreJsData.js","webpack://dubbo-admin-ui/./node_modules/lodash/_defineProperty.js","webpack://dubbo-admin-ui/./node_modules/lodash/_freeGlobal.js","webpack://dubbo-admin-ui/./node_modules/lodash/_getMapData.js","webpack://dubbo-admin-ui/./node_modules/lodash/_getNative.js","webpack://dubbo-admin-ui/./node_modules/lodash/_getRawTag.js","webpack://dubbo-admin-ui/./node_modules/lodash/_getValue.js","webpack://dubbo-admin-ui/./node_modules/lodash/_hashClear.js","webpack://dubbo-admin-ui/./node_modules/lodash/_hashDelete.js","webpack://dubbo-admin-ui/./node_modules/lodash/_hashGet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_hashHas.js","webpack://dubbo-admin-ui/./node_modules/lodash/_hashSet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_isIndex.js","webpack://dubbo-admin-ui/./node_modules/lodash/_isKey.js","webpack://dubbo-admin-ui/./node_modules/lodash/_isKeyable.js","webpack://dubbo-admin-ui/./node_modules/lodash/_isMasked.js","webpack://dubbo-admin-ui/./node_modules/lodash/_listCacheClear.js","webpack://dubbo-admin-ui/./node_modules/lodash/_listCacheDelete.js","webpack://dubbo-admin-ui/./node_modules/lodash/_listCacheGet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_listCacheHas.js","webpack://dubbo-admin-ui/./node_modules/lodash/_listCacheSet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_mapCacheClear.js","webpack://dubbo-admin-ui/./node_modules/lodash/_mapCacheDelete.js","webpack://dubbo-admin-ui/./node_modules/lodash/_mapCacheGet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_mapCacheHas.js","webpack://dubbo-admin-ui/./node_modules/lodash/_mapCacheSet.js","webpack://dubbo-admin-ui/./node_modules/lodash/_memoizeCapped.js","webpack://dubbo-admin-ui/./node_modules/lodash/_nativeCreate.js","webpack://dubbo-admin-ui/./node_modules/lodash/_objectToString.js","webpack://dubbo-admin-ui/./node_modules/lodash/_root.js","webpack://dubbo-admin-ui/./node_modules/lodash/_stringToPath.js","webpack://dubbo-admin-ui/./node_modules/lodash/_toKey.js","webpack://dubbo-admin-ui/./node_modules/lodash/_toSource.js","webpack://dubbo-admin-ui/./node_modules/lodash/debounce.js","webpack://dubbo-admin-ui/./node_modules/lodash/eq.js","webpack://dubbo-admin-ui/./node_modules/lodash/isArray.js","webpack://dubbo-admin-ui/./node_modules/lodash/isFunction.js","webpack://dubbo-admin-ui/./node_modules/lodash/isObject.js","webpack://dubbo-admin-ui/./node_modules/lodash/isObjectLike.js","webpack://dubbo-admin-ui/./node_modules/lodash/isSymbol.js","webpack://dubbo-admin-ui/./node_modules/lodash/lodash.js","webpack://dubbo-admin-ui/./node_modules/lodash/memoize.js","webpack://dubbo-admin-ui/./node_modules/lodash/now.js","webpack://dubbo-admin-ui/./node_modules/lodash/set.js","webpack://dubbo-admin-ui/./node_modules/lodash/toNumber.js","webpack://dubbo-admin-ui/./node_modules/lodash/toString.js","webpack://dubbo-admin-ui/./node_modules/mockjs/dist/mock.js","webpack://dubbo-admin-ui/./node_modules/vue-clipboard2/vue-clipboard.js","webpack://dubbo-admin-ui/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://dubbo-admin-ui/./node_modules/vue-json-viewer/vue-json-viewer.js","webpack://dubbo-admin-ui/./node_modules/vue-router/dist/vue-router.esm.js","webpack://dubbo-admin-ui/./node_modules/vue/dist/vue.runtime.esm.js","webpack://dubbo-admin-ui/./node_modules/vuetify/dist/vuetify.js","webpack://dubbo-admin-ui/./node_modules/vuex/dist/vuex.esm.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/Element.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/Handler.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/Layer.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/Painter.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/Storage.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/animation/Animation.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/animation/Animator.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/animation/Clip.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/animation/easing.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/config.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/arc.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/cubic.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/line.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/path.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/polygon.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/quadratic.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/text.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/util.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/contain/windingLine.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/container/Group.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/BoundingRect.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/GestureMgr.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/LRU.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/PathProxy.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/bbox.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/curve.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/dom.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/env.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/event.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/guid.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/log.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/matrix.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/timsort.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/util.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/core/vector.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Displayable.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Gradient.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Image.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Path.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Pattern.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Style.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/Text.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/constant.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/image.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/helper/text.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/mixin/Animatable.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/mixin/Draggable.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/mixin/Eventful.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/mixin/Transformable.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/tool/color.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/tool/parseSVG.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/tool/path.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/tool/transformPath.js","webpack://dubbo-admin-ui/./node_modules/zrender/lib/zrender.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/a-callable.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/an-object.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/array-includes.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/array-set-length.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/classof-raw.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/create-property-descriptor.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/define-built-in.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/define-global-property.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/descriptors.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/document-all.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/document-create-element.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/engine-user-agent.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/engine-v8-version.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/enum-bug-keys.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/export.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/fails.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/function-bind-native.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/function-call.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/function-name.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/function-uncurry-this.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/get-built-in.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/get-method.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/global.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/has-own-property.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/hidden-keys.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/ie8-dom-define.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/indexed-object.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/inspect-source.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/internal-state.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-array.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-callable.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-forced.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-object.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-pure.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/is-symbol.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/length-of-array-like.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/make-built-in.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/math-trunc.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-define-property.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-keys-internal.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/own-keys.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/require-object-coercible.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/shared-key.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/shared-store.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/shared.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-absolute-index.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-indexed-object.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-length.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-object.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-primitive.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/to-property-key.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/try-to-string.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/uid.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://dubbo-admin-ui/./node_modules/core-js/internals/well-known-symbol.js","webpack://dubbo-admin-ui/./node_modules/core-js/modules/es.array.push.js"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"echarts\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","let raf = null;\nfunction requestAnimationFrame (callback) {\n if (!raf) {\n raf = (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function (callback) {\n return setTimeout(callback, 16)\n }\n ).bind(window);\n }\n return raf(callback)\n}\n\nlet caf = null;\nfunction cancelAnimationFrame (id) {\n if (!caf) {\n caf = (\n window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n function (id) {\n clearTimeout(id);\n }\n ).bind(window);\n }\n\n caf(id);\n}\n\nfunction createStyles (styleText) {\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (style.styleSheet) {\n style.styleSheet.cssText = styleText;\n } else {\n style.appendChild(document.createTextNode(styleText));\n }\n (document.querySelector('head') || document.body).appendChild(style);\n return style\n}\n\nfunction createElement (tagName, props = {}) {\n let elem = document.createElement(tagName);\n Object.keys(props).forEach(key => {\n elem[key] = props[key];\n });\n return elem\n}\n\nfunction getComputedStyle (elem, prop, pseudo) {\n // for older versions of Firefox, `getComputedStyle` required\n // the second argument and may return `null` for some elements\n // when `display: none`\n let computedStyle = window.getComputedStyle(elem, pseudo || null) || {\n display: 'none'\n };\n\n return computedStyle[prop]\n}\n\nfunction getRenderInfo (elem) {\n if (!document.documentElement.contains(elem)) {\n return {\n detached: true,\n rendered: false\n }\n }\n\n let current = elem;\n while (current !== document) {\n if (getComputedStyle(current, 'display') === 'none') {\n return {\n detached: false,\n rendered: false\n }\n }\n current = current.parentNode;\n }\n\n return {\n detached: false,\n rendered: true\n }\n}\n\nvar css = \".resize-triggers{visibility:hidden;opacity:0}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:\\\"\\\";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}\";\n\nlet total = 0;\nlet style = null;\n\nfunction addListener (elem, callback) {\n if (!elem.__resize_mutation_handler__) {\n elem.__resize_mutation_handler__ = handleMutation.bind(elem);\n }\n\n let listeners = elem.__resize_listeners__;\n\n if (!listeners) {\n elem.__resize_listeners__ = [];\n if (window.ResizeObserver) {\n let { offsetWidth, offsetHeight } = elem;\n let ro = new ResizeObserver(() => {\n if (!elem.__resize_observer_triggered__) {\n elem.__resize_observer_triggered__ = true;\n if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {\n return\n }\n }\n runCallbacks(elem);\n });\n\n // initially display none won't trigger ResizeObserver callback\n let { detached, rendered } = getRenderInfo(elem);\n elem.__resize_observer_triggered__ = detached === false && rendered === false;\n elem.__resize_observer__ = ro;\n ro.observe(elem);\n } else if (elem.attachEvent && elem.addEventListener) {\n // targeting IE9/10\n elem.__resize_legacy_resize_handler__ = function handleLegacyResize () {\n runCallbacks(elem);\n };\n elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n } else {\n if (!total) {\n style = createStyles(css);\n }\n initTriggers(elem);\n\n elem.__resize_rendered__ = getRenderInfo(elem).rendered;\n if (window.MutationObserver) {\n let mo = new MutationObserver(elem.__resize_mutation_handler__);\n mo.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n elem.__resize_mutation_observer__ = mo;\n }\n }\n }\n\n elem.__resize_listeners__.push(callback);\n total++;\n}\n\nfunction removeListener (elem, callback) {\n // targeting IE9/10\n if (elem.detachEvent && elem.removeEventListener) {\n elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n return\n }\n\n let listeners = elem.__resize_listeners__;\n if (!listeners) {\n return\n }\n listeners.splice(listeners.indexOf(callback), 1);\n\n if (!listeners.length) {\n if (elem.__resize_observer__) {\n elem.__resize_observer__.unobserve(elem);\n elem.__resize_observer__.disconnect();\n elem.__resize_observer__ = null;\n } else {\n if (elem.__resize_mutation_observer__) {\n elem.__resize_mutation_observer__.disconnect();\n elem.__resize_mutation_observer__ = null;\n }\n elem.removeEventListener('scroll', handleScroll);\n elem.removeChild(elem.__resize_triggers__.triggers);\n elem.__resize_triggers__ = null;\n }\n elem.__resize_listeners__ = null;\n }\n\n if (!--total && style) {\n style.parentNode.removeChild(style);\n }\n}\n\nfunction getUpdatedSize (elem) {\n let { width, height } = elem.__resize_last__;\n let { offsetWidth, offsetHeight } = elem;\n if (offsetWidth !== width || offsetHeight !== height) {\n return {\n width: offsetWidth,\n height: offsetHeight\n }\n }\n return null\n}\n\nfunction handleMutation () {\n // `this` denotes the scrolling element\n let { rendered, detached } = getRenderInfo(this);\n if (rendered !== this.__resize_rendered__) {\n if (!detached && this.__resize_triggers__) {\n resetTriggers(this);\n this.addEventListener('scroll', handleScroll, true);\n }\n this.__resize_rendered__ = rendered;\n runCallbacks(this);\n }\n}\n\nfunction handleScroll () {\n // `this` denotes the scrolling element\n resetTriggers(this);\n if (this.__resize_raf__) {\n cancelAnimationFrame(this.__resize_raf__);\n }\n this.__resize_raf__ = requestAnimationFrame(() => {\n let updated = getUpdatedSize(this);\n if (updated) {\n this.__resize_last__ = updated;\n runCallbacks(this);\n }\n });\n}\n\nfunction runCallbacks (elem) {\n if (!elem || !elem.__resize_listeners__) {\n return\n }\n elem.__resize_listeners__.forEach(callback => {\n callback.call(elem);\n });\n}\n\nfunction initTriggers (elem) {\n let position = getComputedStyle(elem, 'position');\n if (!position || position === 'static') {\n elem.style.position = 'relative';\n }\n\n elem.__resize_old_position__ = position;\n elem.__resize_last__ = {};\n\n let triggers = createElement('div', {\n className: 'resize-triggers'\n });\n let expand = createElement('div', {\n className: 'resize-expand-trigger'\n });\n let expandChild = createElement('div');\n let contract = createElement('div', {\n className: 'resize-contract-trigger'\n });\n expand.appendChild(expandChild);\n triggers.appendChild(expand);\n triggers.appendChild(contract);\n elem.appendChild(triggers);\n\n elem.__resize_triggers__ = {\n triggers,\n expand,\n expandChild,\n contract\n };\n\n resetTriggers(elem);\n elem.addEventListener('scroll', handleScroll, true);\n\n elem.__resize_last__ = {\n width: elem.offsetWidth,\n height: elem.offsetHeight\n };\n}\n\nfunction resetTriggers (elem) {\n let { expand, expandChild, contract } = elem.__resize_triggers__;\n\n // batch read\n let { scrollWidth: csw, scrollHeight: csh } = contract;\n let { offsetWidth: eow, offsetHeight: eoh, scrollWidth: esw, scrollHeight: esh } = expand;\n\n // batch write\n contract.scrollLeft = csw;\n contract.scrollTop = csh;\n expandChild.style.width = eow + 1 + 'px';\n expandChild.style.height = eoh + 1 + 'px';\n expand.scrollLeft = esw;\n expand.scrollTop = esh;\n}\n\nexport { addListener, removeListener };\n","<template>\n<div class=\"echarts\"/>\n</template>\n\n<style>\n.echarts {\n width: 600px;\n height: 400px;\n}\n</style>\n\n<script>\nimport echarts from 'echarts/lib/echarts'\nimport debounce from 'lodash/debounce'\nimport { addListener, removeListener } from 'resize-detector'\n\n// enumerating ECharts events for now\nconst EVENTS = [\n 'legendselectchanged',\n 'legendselected',\n 'legendunselected',\n 'legendscroll',\n 'datazoom',\n 'datarangeselected',\n 'timelinechanged',\n 'timelineplaychanged',\n 'restore',\n 'dataviewchanged',\n 'magictypechanged',\n 'geoselectchanged',\n 'geoselected',\n 'geounselected',\n 'pieselectchanged',\n 'pieselected',\n 'pieunselected',\n 'mapselectchanged',\n 'mapselected',\n 'mapunselected',\n 'axisareaselected',\n 'focusnodeadjacency',\n 'unfocusnodeadjacency',\n 'brush',\n 'brushselected',\n 'rendered',\n 'finished',\n 'click',\n 'dblclick',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'mousedown',\n 'mouseup',\n 'globalout',\n 'contextmenu'\n]\n\nconst ZR_EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'mousewheel',\n 'dblclick',\n 'contextmenu'\n]\n\nconst INIT_TRIGGERS = ['theme', 'initOptions', 'autoresize']\nconst REWATCH_TRIGGERS = ['manualUpdate', 'watchShallow']\n\nexport default {\n props: {\n options: Object,\n theme: [String, Object],\n initOptions: Object,\n group: String,\n autoresize: Boolean,\n watchShallow: Boolean,\n manualUpdate: Boolean\n },\n data () {\n return {\n lastArea: 0\n }\n },\n watch: {\n group (group) {\n this.chart.group = group\n }\n },\n methods: {\n // provide an explicit merge option method\n mergeOptions (options, notMerge, lazyUpdate) {\n if (this.manualUpdate) {\n this.manualOptions = options\n }\n\n if (!this.chart) {\n this.init(options)\n } else {\n this.delegateMethod('setOption', options, notMerge, lazyUpdate)\n }\n },\n // just delegates ECharts methods to Vue component\n // use explicit params to reduce transpiled size for now\n appendData (params) {\n this.delegateMethod('appendData', params)\n },\n resize (options) {\n this.delegateMethod('resize', options)\n },\n dispatchAction (payload) {\n this.delegateMethod('dispatchAction', payload)\n },\n convertToPixel (finder, value) {\n return this.delegateMethod('convertToPixel', finder, value)\n },\n convertFromPixel (finder, value) {\n return this.delegateMethod('convertFromPixel', finder, value)\n },\n containPixel (finder, value) {\n return this.delegateMethod('containPixel', finder, value)\n },\n showLoading (type, options) {\n this.delegateMethod('showLoading', type, options)\n },\n hideLoading () {\n this.delegateMethod('hideLoading')\n },\n getDataURL (options) {\n return this.delegateMethod('getDataURL', options)\n },\n getConnectedDataURL (options) {\n return this.delegateMethod('getConnectedDataURL', options)\n },\n clear () {\n this.delegateMethod('clear')\n },\n dispose () {\n this.delegateMethod('dispose')\n },\n delegateMethod (name, ...args) {\n if (!this.chart) {\n this.init()\n }\n return this.chart[name](...args)\n },\n delegateGet (methodName) {\n if (!this.chart) {\n this.init()\n }\n return this.chart[methodName]()\n },\n getArea () {\n return this.$el.offsetWidth * this.$el.offsetHeight\n },\n init (options) {\n if (this.chart) {\n return\n }\n\n let chart = echarts.init(this.$el, this.theme, this.initOptions)\n\n if (this.group) {\n chart.group = this.group\n }\n\n chart.setOption(options || this.manualOptions || this.options || {}, true)\n\n // expose ECharts events as custom events\n EVENTS.forEach(event => {\n chart.on(event, params => {\n this.$emit(event, params)\n })\n })\n\n ZR_EVENTS.forEach(event => {\n chart.getZr().on(event, params => {\n this.$emit(`zr:${event}`, params)\n })\n })\n\n if (this.autoresize) {\n this.lastArea = this.getArea()\n this.__resizeHandler = debounce(() => {\n if (this.lastArea === 0) {\n // emulate initial render for initially hidden charts\n this.mergeOptions({}, true)\n this.resize()\n this.mergeOptions(this.options || this.manualOptions || {}, true)\n } else {\n this.resize()\n }\n this.lastArea = this.getArea()\n }, 100, { leading: true })\n addListener(this.$el, this.__resizeHandler)\n }\n\n Object.defineProperties(this, {\n // Only recalculated when accessed from JavaScript.\n // Won't update DOM on value change because getters\n // don't depend on reactive values\n width: {\n configurable: true,\n get: () => {\n return this.delegateGet('getWidth')\n }\n },\n height: {\n configurable: true,\n get: () => {\n return this.delegateGet('getHeight')\n }\n },\n isDisposed: {\n configurable: true,\n get: () => {\n return !!this.delegateGet('isDisposed')\n }\n },\n computedOptions: {\n configurable: true,\n get: () => {\n return this.delegateGet('getOption')\n }\n }\n })\n\n this.chart = chart\n },\n initOptionsWatcher () {\n if (this.__unwatchOptions) {\n this.__unwatchOptions()\n this.__unwatchOptions = null\n }\n\n if (!this.manualUpdate) {\n this.__unwatchOptions = this.$watch('options', (val, oldVal) => {\n if (!this.chart && val) {\n this.init()\n } else {\n // mutating `options` will lead to merging\n // replacing it with new reference will lead to not merging\n // eg.\n // `this.options = Object.assign({}, this.options, { ... })`\n // will trigger `this.chart.setOption(val, true)\n // `this.options.title.text = 'Trends'`\n // will trigger `this.chart.setOption(val, false)`\n this.chart.setOption(val, val !== oldVal)\n }\n }, { deep: !this.watchShallow })\n }\n },\n destroy () {\n if (this.autoresize) {\n removeListener(this.$el, this.__resizeHandler)\n }\n this.dispose()\n this.chart = null\n },\n refresh () {\n if (this.chart) {\n this.destroy()\n this.init()\n }\n }\n },\n created () {\n this.initOptionsWatcher()\n\n INIT_TRIGGERS.forEach(prop => {\n this.$watch(prop, () => {\n this.refresh()\n }, { deep: true })\n })\n\n REWATCH_TRIGGERS.forEach(prop => {\n this.$watch(prop, () => {\n this.initOptionsWatcher()\n this.refresh()\n })\n })\n },\n mounted () {\n // auto init if `options` is already provided\n if (this.options) {\n this.init()\n }\n },\n activated () {\n if (this.autoresize) {\n this.chart && this.chart.resize()\n }\n },\n destroyed () {\n if (this.chart) {\n this.destroy()\n }\n },\n connect (group) {\n if (typeof group !== 'string') {\n group = group.map(chart => chart.chart)\n }\n echarts.connect(group)\n },\n disconnect (group) {\n echarts.disConnect(group)\n },\n registerMap (mapName, geoJSON, specialAreas) {\n echarts.registerMap(mapName, geoJSON, specialAreas)\n },\n registerTheme (name, theme) {\n echarts.registerTheme(name, theme)\n },\n graphic: echarts.graphic\n}\n</script>\n","import mod from \"-!../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECharts.vue?vue&type=template&id=0efcb556&\"\nimport script from \"./ECharts.vue?vue&type=script&lang=js&\"\nexport * from \"./ECharts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ECharts.vue?vue&type=style&index=0&id=0efcb556&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(3);\nvar delegate = __webpack_require__(4);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(5);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(0);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n// CONCATENATED MODULE: ./src/clipboard-action.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar clipboard_action_ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = select_default()(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction);\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(1);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(2);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n\n// CONCATENATED MODULE: ./src/clipboard.js\nvar clipboard_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\nvar clipboard_Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n clipboard_classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(tiny_emitter_default.a);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\n/* harmony default export */ var clipboard = __webpack_exports__[\"default\"] = (clipboard_Clipboard);\n\n/***/ })\n/******/ ])[\"default\"];\n});","/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if(\"SELECT\"===t.nodeName)t.focus(),e=t.value;else if(\"INPUT\"===t.nodeName||\"TEXTAREA\"===t.nodeName){var n=t.hasAttribute(\"readonly\");n||t.setAttribute(\"readonly\",\"\"),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute(\"readonly\"),e=t.value}else{t.hasAttribute(\"contenteditable\")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n,t.exports.TinyEmitter=n},function(t,e,n){var d=n(3),h=n(4);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error(\"Missing required arguments\");if(!d.string(e))throw new TypeError(\"Second argument must be a String\");if(!d.fn(n))throw new TypeError(\"Third argument must be a Function\");if(d.node(t))return s=e,f=n,(u=t).addEventListener(s,f),{destroy:function(){u.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,l=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,l)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,l)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\");var o,r,i,a,c,l,u,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&(\"[object NodeList]\"===e||\"[object HTMLCollection]\"===e)&&\"length\"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return\"string\"==typeof t||t instanceof String},n.fn=function(t){return\"[object Function]\"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(5);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return\"function\"==typeof t.addEventListener?i.apply(null,arguments):\"function\"==typeof n?i.bind(null,document).apply(null,arguments):(\"string\"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if(\"undefined\"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if(\"function\"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},function(t,e,n){\"use strict\";n.r(e);var o=n(0),r=n.n(o),i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.resolveOptions(t),this.initSelection()}var l=(function(t,e,n){return e&&a(t.prototype,e),n&&a(t,n),t}(c,[{key:\"resolveOptions\",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=\"\"}},{key:\"initSelection\",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:\"selectFake\",value:function(){var t=this,e=\"rtl\"==document.documentElement.getAttribute(\"dir\");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener(\"click\",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement(\"textarea\"),this.fakeElem.style.fontSize=\"12pt\",this.fakeElem.style.border=\"0\",this.fakeElem.style.padding=\"0\",this.fakeElem.style.margin=\"0\",this.fakeElem.style.position=\"absolute\",this.fakeElem.style[e?\"right\":\"left\"]=\"-9999px\";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+\"px\",this.fakeElem.setAttribute(\"readonly\",\"\"),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=r()(this.fakeElem),this.copyText()}},{key:\"removeFake\",value:function(){this.fakeHandler&&(this.container.removeEventListener(\"click\",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:\"selectTarget\",value:function(){this.selectedText=r()(this.target),this.copyText()}},{key:\"copyText\",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:\"handleResult\",value:function(t){this.emitter.emit(t?\"success\":\"error\",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:\"clearSelection\",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:\"destroy\",value:function(){this.removeFake()}},{key:\"action\",set:function(t){var e=0<arguments.length&&void 0!==t?t:\"copy\";if(this._action=e,\"copy\"!==this._action&&\"cut\"!==this._action)throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"')},get:function(){return this._action}},{key:\"target\",set:function(t){if(void 0!==t){if(!t||\"object\"!==(void 0===t?\"undefined\":i(t))||1!==t.nodeType)throw new Error('Invalid \"target\" value, use a valid Element');if(\"copy\"===this.action&&t.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(\"cut\"===this.action&&(t.hasAttribute(\"readonly\")||t.hasAttribute(\"disabled\")))throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');this._target=t}},get:function(){return this._target}}]),c),u=n(1),s=n.n(u),f=n(2),d=n.n(f),h=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},p=function(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),t};function y(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var m=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(v,s.a),p(v,[{key:\"resolveOptions\",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=\"function\"==typeof e.action?e.action:this.defaultAction,this.target=\"function\"==typeof e.target?e.target:this.defaultTarget,this.text=\"function\"==typeof e.text?e.text:this.defaultText,this.container=\"object\"===h(e.container)?e.container:document.body}},{key:\"listenClick\",value:function(t){var e=this;this.listener=d()(t,\"click\",function(t){return e.onClick(t)})}},{key:\"onClick\",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:\"defaultAction\",value:function(t){return b(\"action\",t)}},{key:\"defaultTarget\",value:function(t){var e=b(\"target\",t);if(e)return document.querySelector(e)}},{key:\"defaultText\",value:function(t){return b(\"text\",t)}},{key:\"destroy\",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:\"isSupported\",value:function(t){var e=0<arguments.length&&void 0!==t?t:[\"copy\",\"cut\"],n=\"string\"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),v);function v(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,v);var n=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this));return n.resolveOptions(e),n.listenClick(t),n}function b(t,e){var n=\"data-clipboard-\"+t;if(e.hasAttribute(n))return e.getAttribute(n)}e.default=m}],r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=6).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var n,o});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n zrUtil.each(echartsAPIList, function (name) {\n this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n }, this);\n}\n\nvar _default = ExtensionAPI;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.<number>} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.<number>} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: null,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._symbolCtor;\n var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = data.getItemLayout(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._symbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n};\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = fields.large;\n var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n // exists. See #11611 . Probably we need to modify this structure, see the comment\n // on `performRawSeries` in `Schedular.js`.\n\n var large = fields.large = pipelineContext && pipelineContext.large;\n var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\n return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimension('defaultedLabel', true);\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n return retrieveRawValue(data, dataIndex, labelDims[0]);\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n vals.push(val);\n }\n\n return vals.join(' ');\n }\n}\n\nexports.getDefaultLabel = getDefaultLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\n\nrequire(\"../component/gridSimple\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _bbox = require(\"zrender/lib/core/bbox\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.<Array.<number>>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.<Array.<number>>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.<Array.<number>>} stackedOnPoints\n * @param {Array.<Array.<number>>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"../coord/cartesian/AxisModel\");\n\nrequire(\"./axis/CartesianAxisView\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.<number>} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n type: 'cartesianAxis',\n axisPointerClass: 'CartesianAxisPointer',\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var gridModel = axisModel.getCoordSysModel();\n var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel, gridModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n var tickValue = ticksCoords[i].tickValue;\n\n this._axisGroup.add(new graphic.Line({\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: zrUtil.defaults({\n stroke: lineColors[colorIndex]\n }, lineStyle),\n silent: true\n }));\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _minorSplitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n this._axisGroup.add(new graphic.Line({\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: lineStyle,\n silent: true\n }));\n }\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitArea: function (axisModel, gridModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n }\n});\nCartesianAxisView.extend({\n type: 'xAxis'\n});\nCartesianAxisView.extend({\n type: 'yAxis'\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitAreaModel = axisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var gridRect = gridModel.coordinateSystem.getRect();\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitAreaModel,\n clamp: true\n });\n\n if (!ticksCoords.length) {\n return;\n } // For Making appropriate splitArea animation, the color and anid\n // should be corresponding to previous one if possible.\n\n\n var areaColorsLen = areaColors.length;\n var lastSplitAreaColors = axisView.__splitAreaColors;\n var newSplitAreaColors = zrUtil.createHashMap();\n var colorIndex = 0;\n\n if (lastSplitAreaColors) {\n for (var i = 0; i < ticksCoords.length; i++) {\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n if (cIndex != null) {\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n break;\n }\n }\n }\n\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n var areaStyle = areaStyleModel.getAreaStyle();\n areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n var x;\n var y;\n var width;\n var height;\n\n if (axis.isHorizontal()) {\n x = prev;\n y = gridRect.y;\n width = tickCoord - x;\n height = gridRect.height;\n prev = x + width;\n } else {\n x = gridRect.x;\n y = prev;\n width = gridRect.width;\n height = tickCoord - y;\n prev = y + height;\n }\n\n var tickValue = ticksCoords[i - 1].tickValue;\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n axisGroup.add(new graphic.Rect({\n anid: tickValue != null ? 'area_' + tickValue : null,\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n },\n style: zrUtil.defaults({\n fill: areaColors[colorIndex]\n }, areaStyle),\n silent: true\n }));\n colorIndex = (colorIndex + 1) % areaColorsLen;\n }\n\n axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar globalListener = require(\"./globalListener\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerView = echarts.extendComponentView({\n type: 'axisPointer',\n render: function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n globalListener.unregister(api.getZr(), 'axisPointer');\n AxisPointerView.superApply(this._model, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n AxisPointerView.superApply(this._model, 'dispose', arguments);\n }\n});\nvar _default = AxisPointerView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.<number>} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.<number>} xy\n * @param {Array.<number>} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = require(\"./modelHelper\");\n\nvar findPointFromSeries = require(\"./findPointFromSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.<number>} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.<number>} [payload.y] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n * [{\n * axisDim: 'x'|'y'|'angle'|...,\n * axisIndex: ...,\n * value: ...\n * }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.<number>|Function} [payload.position] Tooltip position,\n * which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputFinder = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n });\n updateModelActually(showValueMap, axesInfo, outputFinder);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By defualt use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n zrUtil.extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!dontSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimension(dim, true);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n zrUtil.each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n zrUtil.each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.<number>} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var key = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[key] = {\n key: key,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: []\n };\n axesInfoInCoordSys[key] = axisInfo;\n result.seriesInvolved |= involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[key] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var volatileOption = {};\n each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n }, this);\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\n\nfunction getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.<Object>} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.<number>} p1\n * @param {Array.<number>} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.<number>} xy\n * @param {Array.<number>} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar echarts = require(\"../echarts\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _format = require(\"../util/format\");\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Model\necharts.extendComponentModel({\n type: 'title',\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 6,\n show: true,\n text: '',\n // 超链接跳转\n // link: null,\n // 仅支持self | blank\n target: 'blank',\n subtext: '',\n // 超链接跳转\n // sublink: null,\n // 仅支持self | blank\n subtarget: 'blank',\n // 'center' ¦ 'left' ¦ 'right'\n // ¦ {number}(x坐标,单位px)\n left: 0,\n // 'top' ¦ 'bottom' ¦ 'center'\n // ¦ {number}(y坐标,单位px)\n top: 0,\n // 水平对齐\n // 'auto' | 'left' | 'right' | 'center'\n // 默认根据 left 的位置判断是左对齐还是右对齐\n // textAlign: null\n //\n // 垂直对齐\n // 'auto' | 'top' | 'bottom' | 'middle'\n // 默认根据 top 位置判断是上对齐还是下对齐\n // textVerticalAlign: null\n // textBaseline: null // The same as textVerticalAlign.\n backgroundColor: 'rgba(0,0,0,0)',\n // 标题边框颜色\n borderColor: '#ccc',\n // 标题边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 标题内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 主副标题纵向间隔,单位px,默认为10,\n itemGap: 10,\n textStyle: {\n fontSize: 18,\n fontWeight: 'bolder',\n color: '#333'\n },\n subtextStyle: {\n color: '#aaa'\n }\n }\n}); // View\n\necharts.extendComponentView({\n type: 'title',\n render: function (titleModel, ecModel, api) {\n this.group.removeAll();\n\n if (!titleModel.get('show')) {\n return;\n }\n\n var group = this.group;\n var textStyleModel = titleModel.getModel('textStyle');\n var subtextStyleModel = titleModel.getModel('subtextStyle');\n var textAlign = titleModel.get('textAlign');\n var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\n var textEl = new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: titleModel.get('text'),\n textFill: textStyleModel.getTextColor()\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var textRect = textEl.getBoundingRect();\n var subText = titleModel.get('subtext');\n var subTextEl = new graphic.Text({\n style: graphic.setTextStyle({}, subtextStyleModel, {\n text: subText,\n textFill: subtextStyleModel.getTextColor(),\n y: textRect.height + titleModel.get('itemGap'),\n textVerticalAlign: 'top'\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var link = titleModel.get('link');\n var sublink = titleModel.get('sublink');\n var triggerEvent = titleModel.get('triggerEvent', true);\n textEl.silent = !link && !triggerEvent;\n subTextEl.silent = !sublink && !triggerEvent;\n\n if (link) {\n textEl.on('click', function () {\n windowOpen(link, '_' + titleModel.get('target'));\n });\n }\n\n if (sublink) {\n subTextEl.on('click', function () {\n windowOpen(link, '_' + titleModel.get('subtarget'));\n });\n }\n\n textEl.eventData = subTextEl.eventData = triggerEvent ? {\n componentType: 'title',\n componentIndex: titleModel.componentIndex\n } : null;\n group.add(textEl);\n subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n var groupRect = group.getBoundingRect();\n var layoutOption = titleModel.getBoxLayoutParams();\n layoutOption.width = groupRect.width;\n layoutOption.height = groupRect.height;\n var layoutRect = getLayoutRect(layoutOption, {\n width: api.getWidth(),\n height: api.getHeight()\n }, titleModel.get('padding')); // Adjust text align based on position\n\n if (!textAlign) {\n // Align left if title is on the left. center and right is same\n textAlign = titleModel.get('left') || titleModel.get('right');\n\n if (textAlign === 'middle') {\n textAlign = 'center';\n } // Adjust layout by text align\n\n\n if (textAlign === 'right') {\n layoutRect.x += layoutRect.width;\n } else if (textAlign === 'center') {\n layoutRect.x += layoutRect.width / 2;\n }\n }\n\n if (!textVerticalAlign) {\n textVerticalAlign = titleModel.get('top') || titleModel.get('bottom');\n\n if (textVerticalAlign === 'center') {\n textVerticalAlign = 'middle';\n }\n\n if (textVerticalAlign === 'bottom') {\n layoutRect.y += layoutRect.height;\n } else if (textVerticalAlign === 'middle') {\n layoutRect.y += layoutRect.height / 2;\n }\n\n textVerticalAlign = textVerticalAlign || 'top';\n }\n\n group.attr('position', [layoutRect.x, layoutRect.y]);\n var alignStyle = {\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n textEl.setStyle(alignStyle);\n subTextEl.setStyle(alignStyle); // Render background\n // Get groupRect again because textAlign has been changed\n\n groupRect = group.getBoundingRect();\n var padding = layoutRect.margin;\n var style = titleModel.getItemStyle(['color', 'opacity']);\n style.fill = titleModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: groupRect.x - padding[3],\n y: groupRect.y - padding[0],\n width: groupRect.width + padding[1] + padding[3],\n height: groupRect.height + padding[0] + padding[2],\n r: titleModel.get('borderRadius')\n },\n style: style,\n subPixelOptimize: true,\n silent: true\n });\n group.add(rect);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./tooltip/TooltipModel\");\n\nrequire(\"./tooltip/TooltipView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar eventUtil = require(\"zrender/lib/core/event\");\n\nvar domUtil = require(\"zrender/lib/core/dom\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar formatUtil = require(\"../../util/format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n return zrUtil.map(vendors, function (vendorPrefix) {\n return vendorPrefix + 'transition:' + transitionText;\n }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n fontSize && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n if (backgroundColor) {\n if (env.canvasSupported) {\n cssText.push('background-Color:' + backgroundColor);\n } else {\n // for ie\n cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n cssText.push('filter:alpha(opacity=70)');\n }\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n * `false`: the DOM element will be inside the container. Default value.\n * `true`: the DOM element will be appended to HTML body, which avoid\n * some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div');\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n this._styleCoord = [0, 0];\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container;\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n eventUtil.normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n };\n}\n\nTooltipContent.prototype = {\n constructor: TooltipContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n domStyle.position = 'relative';\n } // Hide the tooltip\n // PENDING\n // this.hide();\n\n },\n show: function (tooltipModel) {\n clearTimeout(this._hideTimeout);\n var el = this.el;\n var styleCoord = this._styleCoord;\n el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n // we should set initial value to `left` and `top`.\n + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occsionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cuase some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not suppored by IE8~IE10, fortunately it is a rare\n // scenario.\n\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n this._show = true;\n },\n setContent: function (content) {\n this.el.innerHTML = content == null ? '' : content;\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var el = this.el;\n return [el.clientWidth, el.clientHeight];\n },\n moveTo: function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n var style = this.el.style;\n style.left = styleCoord[0] + 'px';\n style.top = styleCoord[1] + 'px';\n },\n hide: function () {\n this.el.style.display = 'none';\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n this.el.parentNode.removeChild(this.el);\n },\n getOuterSize: function () {\n var width = this.el.clientWidth;\n var height = this.el.clientHeight; // Consider browser compatibility.\n // IE8 does not support getComputedStyle.\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n var stl = document.defaultView.getComputedStyle(this.el);\n\n if (stl) {\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n }\n }\n\n return {\n width: width,\n height: height\n };\n }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n type: 'tooltip',\n dependencies: ['axisPointer'],\n defaultOption: {\n zlevel: 0,\n z: 60,\n show: true,\n // tooltip主体内容\n showContent: true,\n // 'trigger' only works on coordinate system.\n // 'item' | 'axis' | 'none'\n trigger: 'item',\n // 'click' | 'mousemove' | 'none'\n triggerOn: 'mousemove|click',\n alwaysShowContent: false,\n displayMode: 'single',\n // 'single' | 'multipleByCoordSys'\n renderMode: 'auto',\n // 'auto' | 'html' | 'richText'\n // 'auto': use html by default, and use non-html if `document` is not defined\n // 'html': use html for tooltip\n // 'richText': use canvas, svg, and etc. for tooltip\n // 位置 {Array} | {Function}\n // position: null\n // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n // align: null,\n // verticalAlign: null,\n // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n confine: false,\n // 内容格式器:{string}(Template) ¦ {Function}\n // formatter: null\n showDelay: 0,\n // 隐藏延迟,单位ms\n hideDelay: 100,\n // 动画变换时间,单位s\n transitionDuration: 0.4,\n enterable: false,\n // 提示背景颜色,默认为透明度为0.7的黑色\n backgroundColor: 'rgba(50,50,50,0.7)',\n // 提示边框颜色\n borderColor: '#333',\n // 提示边框圆角,单位px,默认为4\n borderRadius: 4,\n // 提示边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 提示内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // Extra css text\n extraCssText: '',\n // 坐标轴指示器,坐标轴触发有效\n axisPointer: {\n // 默认为直线\n // 可选为:'line' | 'shadow' | 'cross'\n type: 'line',\n // type 为 line 的时候有效,指定 tooltip line 所在的轴,可选\n // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n // 默认 'auto',会选择类型为 category 的轴,对于双数值轴,笛卡尔坐标系会默认选择 x 轴\n // 极坐标系会默认选择 angle 轴\n axis: 'auto',\n animation: 'auto',\n animationDurationUpdate: 200,\n animationEasingUpdate: 'exponentialOut',\n crossStyle: {\n color: '#999',\n width: 1,\n type: 'dashed',\n // TODO formatter\n textStyle: {} // lineStyle and shadowStyle should not be specified here,\n // otherwise it will always override those styles on option.axisPointer.\n\n }\n },\n textStyle: {\n color: '#fff',\n fontSize: 14\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Group from 'zrender/src/container/Group';\n\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\nfunction TooltipRichContent(api) {\n this._zr = api.getZr();\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n constructor: TooltipRichContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {// noop\n },\n show: function (tooltipModel) {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.attr('show', true);\n this._show = true;\n },\n\n /**\n * Set tooltip content\n *\n * @param {string} content rich text string of content\n * @param {Object} markerRich rich text style\n * @param {Object} tooltipModel tooltip model\n */\n setContent: function (content, markerRich, tooltipModel) {\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var markers = {};\n var text = content;\n var prefix = '{marker';\n var suffix = '|}';\n var startId = text.indexOf(prefix);\n\n while (startId >= 0) {\n var endId = text.indexOf(suffix);\n var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n if (name.indexOf('sub') > -1) {\n markers['marker' + name] = {\n textWidth: 4,\n textHeight: 4,\n textBorderRadius: 2,\n textBackgroundColor: markerRich[name],\n // TODO: textOffset is not implemented for rich text\n textOffset: [3, 0]\n };\n } else {\n markers['marker' + name] = {\n textWidth: 10,\n textHeight: 10,\n textBorderRadius: 5,\n textBackgroundColor: markerRich[name]\n };\n }\n\n text = text.substr(endId + 1);\n startId = text.indexOf('{marker');\n }\n\n this.el = new Text({\n style: {\n rich: markers,\n text: content,\n textLineHeight: 20,\n textBackgroundColor: tooltipModel.get('backgroundColor'),\n textBorderRadius: tooltipModel.get('borderRadius'),\n textFill: tooltipModel.get('textStyle.color'),\n textPadding: tooltipModel.get('padding')\n },\n z: tooltipModel.get('z')\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var bounding = this.el.getBoundingRect();\n return [bounding.width, bounding.height];\n },\n moveTo: function (x, y) {\n if (this.el) {\n this.el.attr('position', [x, y]);\n }\n },\n hide: function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n getOuterSize: function () {\n var size = this.getSize();\n return {\n width: size[0],\n height: size[1]\n };\n }\n};\nvar _default = TooltipRichContent;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar TooltipContent = require(\"./TooltipContent\");\n\nvar TooltipRichContent = require(\"./TooltipRichContent\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar findPointFromSeries = require(\"../axisPointer/findPointFromSeries\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar Model = require(\"../../model/Model\");\n\nvar globalListener = require(\"../axisPointer/globalListener\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar axisPointerViewHelper = require(\"../axisPointer/viewHelper\");\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar _default = echarts.extendComponentView({\n type: 'tooltip',\n init: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = tooltipModel.get('renderMode');\n this._renderMode = getTooltipRenderMode(renderMode);\n var tooltipContent;\n\n if (this._renderMode === 'html') {\n tooltipContent = new TooltipContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n this._newLine = '<br/>';\n } else {\n tooltipContent = new TooltipRichContent(api);\n this._newLine = '\\n';\n }\n\n this._tooltipContent = tooltipContent;\n },\n render: function (tooltipModel, ecModel, api) {\n if (env.node) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n /**\n * @private\n * @type {module:echarts/component/tooltip/TooltipModel}\n */\n\n this._tooltipModel = tooltipModel;\n /**\n * @private\n * @type {module:echarts/model/Global}\n */\n\n this._ecModel = ecModel;\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n\n this._api = api;\n /**\n * Should be cleaned when render.\n * @private\n * @type {Array.<Array.<Object>>}\n */\n\n this._lastDataByCoordSys = null;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update();\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow();\n },\n _initGlobalListener: function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n },\n _keepShow: function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api; // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && tooltipModel.get('triggerOn') !== 'none') {\n var self = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self._lastX,\n y: self._lastY\n });\n });\n }\n },\n\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n\n if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.position = [payload.x, payload.y];\n el.update();\n el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: payload.dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n position: payload.position,\n target: pointInfo.el\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n },\n manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n },\n // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex;\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n if (tooltipModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n },\n _tryShow: function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } // Always show item tooltip if mouse is on the element with dataIndex\n else if (el && el.dataIndex != null) {\n this._lastDataByCoordSys = null;\n\n this._showSeriesItemTooltip(e, el, dispatchAction);\n } // Tooltip provided directly. Like legend.\n else if (el && el.tooltip) {\n this._lastDataByCoordSys = null;\n\n this._showComponentItemTooltip(e, el, dispatchAction);\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n },\n _showOrMove: function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easyer to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = zrUtil.bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n },\n _showAxisTooltip: function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleDefaultHTML = [];\n var singleParamsList = [];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n var renderMode = this._renderMode;\n var newLine = this._newLine;\n var markers = {};\n each(dataByCoordSys, function (itemCoordSys) {\n // var coordParamList = [];\n // var coordDefaultHTML = [];\n // var coordTooltipModel = buildTooltipModel([\n // e.tooltipOption,\n // itemCoordSys.tooltipOption,\n // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n // globalTooltipModel\n // ]);\n // var displayMode = coordTooltipModel.get('displayMode');\n // var paramsList = displayMode === 'single' ? singleParamsList : [];\n each(itemCoordSys.dataByAxis, function (item) {\n var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n var axisValue = item.value;\n var seriesDefaultHTML = [];\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n zrUtil.each(item.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams.axisDim = item.axisDim;\n dataParams.axisIndex = item.axisIndex;\n dataParams.axisType = item.axisType;\n dataParams.axisId = item.axisId;\n dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n dataParams.axisValueLabel = valueLabel;\n\n if (dataParams) {\n singleParamsList.push(dataParams);\n var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n var html;\n\n if (zrUtil.isObject(seriesTooltip)) {\n html = seriesTooltip.html;\n var newMarkers = seriesTooltip.markers;\n zrUtil.merge(markers, newMarkers);\n } else {\n html = seriesTooltip;\n }\n\n seriesDefaultHTML.push(html);\n }\n }); // Default tooltip content\n // FIXME\n // (1) shold be the first data which has name?\n // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n var firstLine = valueLabel;\n\n if (renderMode !== 'html') {\n singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n } else {\n singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n }\n });\n }, this); // In most case, the second axis is shown upper than the first one.\n\n singleDefaultHTML.reverse();\n singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n var positionExpr = e.position;\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n },\n _showSeriesItemTooltip: function (e, el, dispatchAction) {\n var ecModel = this._ecModel; // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = el.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = el.dataModel || seriesModel;\n var dataIndex = el.dataIndex;\n var dataType = el.dataType;\n var data = dataModel.getData(dataType);\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n var defaultHtml;\n var markers;\n\n if (zrUtil.isObject(seriesTooltip)) {\n defaultHtml = seriesTooltip.html;\n markers = seriesTooltip.markers;\n } else {\n defaultHtml = seriesTooltip;\n markers = null;\n }\n\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n },\n _showComponentItemTooltip: function (e, el, dispatchAction) {\n var tooltipOpt = el.tooltip;\n\n if (typeof tooltipOpt === 'string') {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on cooridinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n },\n _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n if (formatter && typeof formatter === 'string') {\n html = formatUtil.formatTpl(formatter, params, true);\n } else if (typeof formatter === 'function') {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markers, tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n }\n\n tooltipContent.setContent(html, markers, tooltipModel);\n tooltipContent.show(tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n },\n\n /**\n * @param {string|Function|Array.<number>|Object} positionExpr\n * @param {number} x Mouse x\n * @param {number} y Mouse y\n * @param {boolean} confine Whether confine tooltip content in view rect.\n * @param {Object|<Array.<Object>} params\n * @param {module:zrender/Element} el target element\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.<number>}\n */\n _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (typeof positionExpr === 'function') {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (zrUtil.isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (zrUtil.isObject(positionExpr)) {\n positionExpr.width = contentSize[0];\n positionExpr.height = contentSize[1];\n var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (typeof positionExpr === 'string' && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (tooltipModel.get('confine')) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n },\n // FIXME\n // Should we remove this but leave this to user?\n _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n var lastCoordSys = this._lastDataByCoordSys;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n return !!contentNotChanged;\n },\n _hide: function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n },\n dispose: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n }\n});\n/**\n * @param {Array.<Object|module:echarts/model/Model>} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n var resultModel = modelCascade.pop();\n\n while (modelCascade.length) {\n var tooltipOpt = modelCascade.pop();\n\n if (tooltipOpt) {\n if (Model.isInstance(tooltipOpt)) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (typeof tooltipOpt === 'string') {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n\n if (gapH != null) {\n if (x + width + gapH > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var gap = 5;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - gap;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + gap;\n break;\n\n case 'left':\n x = rect.x - domWidth - gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = require(\"./axisTickLabelBuilder\");\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n /**\n * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n * @type {string}\n */\n this.dim = dim;\n /**\n * Axis scale\n * @type {module:echarts/coord/scale/*}\n */\n\n this.scale = scale;\n /**\n * @type {Array.<number>}\n * @private\n */\n\n this._extent = extent || [0, 0];\n /**\n * @type {boolean}\n */\n\n this.inverse = false;\n /**\n * Usually true when axis has a ordinal scale\n * @type {boolean}\n */\n\n this.onBand = false;\n};\n\nAxis.prototype = {\n constructor: Axis,\n\n /**\n * If axis extent contain given coord\n * @param {number} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n },\n\n /**\n * If axis extent contain given data\n * @param {number} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.scale.contain(data);\n },\n\n /**\n * Get coord extent.\n * @return {Array.<number>}\n */\n getExtent: function () {\n return this._extent.slice();\n },\n\n /**\n * Get precision used for formatting\n * @param {Array.<number>} [dataExtent]\n * @return {number}\n */\n getPixelPrecision: function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n },\n\n /**\n * Set coord extent\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n },\n\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n * @param {number} data\n * @param {boolean} clamp\n * @return {number}\n */\n dataToCoord: function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n },\n\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n * @param {number} coord\n * @param {boolean} clamp\n * @return {number}\n */\n coordToData: function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n },\n\n /**\n * Convert pixel point to data in axis\n * @param {Array.<number>} point\n * @param {boolean} clamp\n * @return {number} data\n */\n pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n },\n\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param {Object} [opt]\n * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n * @param {boolean} [opt.clamp] If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n * @return {Array.<Object>} [{\n * coord: ...,\n * tickValue: ...\n * }, ...]\n */\n getTicksCoords: function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickValue) {\n return {\n coord: this.dataToCoord(tickValue),\n tickValue: tickValue\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n },\n\n /**\n * @return {Array.<Array.<Object>>} [{ coord: ..., tickValue: ...}]\n */\n getMinorTicksCoords: function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n },\n\n /**\n * @return {Array.<Object>} [{\n * formattedLabel: string,\n * rawLabel: axis.scale.getLabel(tickValue)\n * tickValue: number\n * }, ...]\n */\n getViewLabels: function () {\n return createAxisLabels(this).labels;\n },\n\n /**\n * @return {module:echarts/coord/model/Model}\n */\n getLabelModel: function () {\n return this.model.getModel('axisLabel');\n },\n\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n * @return {module:echarts/coord/model/Model}\n */\n getTickModel: function () {\n return this.model.getModel('axisTick');\n },\n\n /**\n * Get width of band\n * @return {number}\n */\n getBandWidth: function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n },\n\n /**\n * @abstract\n * @return {boolean} Is horizontal\n */\n isHorizontal: null,\n\n /**\n * @abstract\n * @return {number} Get axis rotate, by degree.\n */\n getRotate: null,\n\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n return calculateCategoryInterval(this);\n }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nvar _default = Axis;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By defualt auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n var fixMin = min != null;\n var fixMax = max != null;\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: fixMin,\n fixMax: fixMax\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\n var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"./axisDefault\");\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n zrUtil.each(AXIS_TYPES, function (axisType) {\n BaseAxisModelClass.extend({\n /**\n * @readOnly\n */\n type: axisName + 'Axis.' + axisType,\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n zrUtil.merge(option, this.getDefaultOption());\n option.type = axisTypeDefaulter(axisName, option);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n\n /**\n * @override\n */\n optionUpdated: function () {\n var thisOption = this.option;\n\n if (thisOption.type === 'category') {\n this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n }\n },\n\n /**\n * Should not be called before all of 'getInitailData' finished.\n * Because categories are collected during initializing data.\n */\n getCategories: function (rawData) {\n var option = this.option; // FIXME\n // warning if called before all of 'getInitailData' finished.\n\n if (option.type === 'category') {\n if (rawData) {\n return option.data;\n }\n\n return this.__ordinalMeta.categories;\n }\n },\n getOrdinalMeta: function () {\n return this.__ordinalMeta;\n },\n defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n });\n });\n ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = require(\"./axisHelper\");\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n * labels: [{\n * formattedLabel: string,\n * rawLabel: string,\n * tickValue: number\n * }, ...],\n * labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.<number>\n * tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: axis.scale.getTicks()\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tickValue, idx) {\n return {\n formattedLabel: labelFormatter(tickValue, idx),\n rawLabel: axis.scale.getLabel(tickValue),\n tickValue: tickValue\n };\n })\n };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtend0 = axisExtent[0];\n cache.axisExtend1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tVal) {\n result.push(onlyTick ? tVal : {\n formattedLabel: labelFormatter(tVal),\n rawLabel: ordinalScale.getLabel(tVal),\n tickValue: tVal\n });\n }\n\n return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n var rawLabel = ordinalScale.getLabel(tickValue);\n\n if (categoryInterval(tickValue, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickValue),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n */\n\n this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n constructor: Axis2D,\n\n /**\n * Index of axis, can be used as key\n */\n index: 0,\n\n /**\n * Implemented in <module:echarts/coord/cartesian/Grid>.\n * @return {Array.<module:echarts/coord/cartesian/Axis2D>}\n * If not on zero of other axis, return null/undefined.\n * If no axes, return an empty array.\n */\n getAxesOnZeroOf: null,\n\n /**\n * Axis model\n * @param {module:echarts/coord/cartesian/AxisModel}\n */\n model: null,\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * Each item cooresponds to this.getExtent(), which\n * means globalExtent[0] may greater than globalExtent[1],\n * unless `asc` is input.\n *\n * @param {boolean} [asc]\n * @return {Array.<number>}\n */\n getGlobalExtent: function (asc) {\n var ret = this.getExtent();\n ret[0] = this.toGlobalCoord(ret[0]);\n ret[1] = this.toGlobalCoord(ret[1]);\n asc && ret[0] > ret[1] && ret.reverse();\n return ret;\n },\n getOtherAxis: function () {\n this.grid.getOtherAxis();\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n },\n\n /**\n * Transform global coord to local coord,\n * i.e. var localCoord = axis.toLocalCoord(80);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toLocalCoord: null,\n\n /**\n * Transform global coord to local coord,\n * i.e. var globalCoord = axis.toLocalCoord(40);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n type: 'cartesian2dAxis',\n\n /**\n * @type {module:echarts/coord/cartesian/Axis2D}\n */\n axis: null,\n\n /**\n * @override\n */\n init: function () {\n AxisModel.superApply(this, 'init', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n mergeOption: function () {\n AxisModel.superApply(this, 'mergeOption', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n restoreData: function () {\n AxisModel.superApply(this, 'restoreData', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n * @return {module:echarts/model/Component}\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'grid',\n index: this.option.gridIndex,\n id: this.option.gridId\n })[0];\n }\n});\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n // gridIndex: 0,\n // gridId: '',\n // Offset is for multiple axis on the same position\n offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Cartesian coordinate system\n * @module echarts/coord/Cartesian\n *\n */\nfunction dimAxisMapper(dim) {\n return this._axes[dim];\n}\n/**\n * @alias module:echarts/coord/Cartesian\n * @constructor\n */\n\n\nvar Cartesian = function (name) {\n this._axes = {};\n this._dimList = [];\n /**\n * @type {string}\n */\n\n this.name = name || '';\n};\n\nCartesian.prototype = {\n constructor: Cartesian,\n type: 'cartesian',\n\n /**\n * Get axis\n * @param {number|string} dim\n * @return {module:echarts/coord/Cartesian~Axis}\n */\n getAxis: function (dim) {\n return this._axes[dim];\n },\n\n /**\n * Get axes list\n * @return {Array.<module:echarts/coord/Cartesian~Axis>}\n */\n getAxes: function () {\n return zrUtil.map(this._dimList, dimAxisMapper, this);\n },\n\n /**\n * Get axes list by given scale type\n */\n getAxesByScale: function (scaleType) {\n scaleType = scaleType.toLowerCase();\n return zrUtil.filter(this.getAxes(), function (axis) {\n return axis.scale.type === scaleType;\n });\n },\n\n /**\n * Add axis\n * @param {module:echarts/coord/Cartesian.Axis}\n */\n addAxis: function (axis) {\n var dim = axis.dim;\n this._axes[dim] = axis;\n\n this._dimList.push(dim);\n },\n\n /**\n * Convert data to coord in nd space\n * @param {Array.<number>|Object.<string, number>} val\n * @return {Array.<number>|Object.<string, number>}\n */\n dataToCoord: function (val) {\n return this._dataCoordConvert(val, 'dataToCoord');\n },\n\n /**\n * Convert coord in nd space to data\n * @param {Array.<number>|Object.<string, number>} val\n * @return {Array.<number>|Object.<string, number>}\n */\n coordToData: function (val) {\n return this._dataCoordConvert(val, 'coordToData');\n },\n _dataCoordConvert: function (input, method) {\n var dimList = this._dimList;\n var output = input instanceof Array ? [] : {};\n\n for (var i = 0; i < dimList.length; i++) {\n var dim = dimList[i];\n var axis = this._axes[dim];\n output[dim] = axis[method](input[dim]);\n }\n\n return output;\n }\n};\nvar _default = Cartesian;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar Cartesian = require(\"./Cartesian\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction Cartesian2D(name) {\n Cartesian.call(this, name);\n}\n\nCartesian2D.prototype = {\n constructor: Cartesian2D,\n type: 'cartesian2d',\n\n /**\n * @type {Array.<string>}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/cartesian/Axis2D}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n },\n\n /**\n * If contain point\n * @param {Array.<number>} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var axisX = this.getAxis('x');\n var axisY = this.getAxis('y');\n return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n },\n\n /**\n * If contain data\n * @param {Array.<number>} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n },\n\n /**\n * @param {Array.<number>} data\n * @param {Array.<number>} out\n * @return {Array.<number>}\n */\n dataToPoint: function (data, reserved, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\n out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\n return out;\n },\n\n /**\n * @param {Array.<number>} data\n * @param {Array.<number>} out\n * @return {Array.<number>}\n */\n clampData: function (data, out) {\n var xScale = this.getAxis('x').scale;\n var yScale = this.getAxis('y').scale;\n var xAxisExtent = xScale.getExtent();\n var yAxisExtent = yScale.getExtent();\n var x = xScale.parse(data[0]);\n var y = yScale.parse(data[1]);\n out = out || [];\n out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\n out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\n return out;\n },\n\n /**\n * @param {Array.<number>} point\n * @param {Array.<number>} out\n * @return {Array.<number>}\n */\n pointToData: function (point, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\n out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\n return out;\n },\n\n /**\n * Get other axis\n * @param {module:echarts/coord/cartesian/Axis2D} axis\n */\n getOtherAxis: function (axis) {\n return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n },\n\n /**\n * Get rect area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {BoundingRect}\n */\n getArea: function () {\n var xExtent = this.getAxis('x').getGlobalExtent();\n var yExtent = this.getAxis('y').getGlobalExtent();\n var x = Math.min(xExtent[0], xExtent[1]);\n var y = Math.min(yExtent[0], yExtent[1]);\n var width = Math.max(xExtent[0], xExtent[1]) - x;\n var height = Math.max(yExtent[0], yExtent[1]) - y;\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n }\n};\nzrUtil.inherits(Cartesian2D, Cartesian);\nvar _default = Cartesian2D;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = require(\"./Cartesian2D\");\n\nvar Axis2D = require(\"./Axis2D\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./GridModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n /**\n * @type {Object.<string, module:echarts/coord/cartesian/Cartesian2D>}\n * @private\n */\n this._coordsMap = {};\n /**\n * @type {Array.<module:echarts/coord/cartesian/Cartesian>}\n * @private\n */\n\n this._coordsList = [];\n /**\n * @type {Object.<string, Array.<module:echarts/coord/cartesian/Axis2D>>}\n * @private\n */\n\n this._axesMap = {};\n /**\n * @type {Array.<module:echarts/coord/cartesian/Axis2D>}\n * @private\n */\n\n this._axesList = [];\n\n this._initCartesian(gridModel, ecModel, api);\n\n this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n var axesMap = this._axesMap;\n\n this._updateScale(ecModel, this.model);\n\n each(axesMap.x, function (xAxis) {\n niceScaleExtent(xAxis.scale, xAxis.model);\n });\n each(axesMap.y, function (yAxis) {\n niceScaleExtent(yAxis.scale, yAxis.model);\n }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n var onZeroRecords = {};\n each(axesMap.x, function (xAxis) {\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n });\n each(axesMap.y, function (yAxis) {\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n }); // Resize again if containLabel is enabled\n // FIXME It may cause getting wrong grid size in data processing stage\n\n this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n axis.getAxesOnZeroOf = function () {\n // TODO: onZero of multiple axes.\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n }; // onZero can not be enabled in these two situations:\n // 1. When any other axis is a category axis.\n // 2. When no axis is cross 0 point.\n\n\n var otherAxes = axesMap[otherAxisDim];\n var otherAxisOnZeroOf;\n var axisModel = axis.model;\n var onZero = axisModel.get('axisLine.onZero');\n var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n if (!onZero) {\n return;\n } // If target axis is specified.\n\n\n if (onZeroAxisIndex != null) {\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n }\n } else {\n // Find the first available other axis.\n for (var idx in otherAxes) {\n if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n // if both onZero, the two Y axes overlap.\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n otherAxisOnZeroOf = otherAxes[idx];\n break;\n }\n }\n }\n\n if (otherAxisOnZeroOf) {\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n }\n\n function getOnZeroRecordKey(axis) {\n return axis.dim + '_' + axis.index;\n }\n}\n\nfunction canOnZeroToAxis(axis) {\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n this._rect = gridRect;\n var axesList = this._axesList;\n adjustAxes(); // Minus label size\n\n if (!ignoreContainLabel && gridModel.get('containLabel')) {\n each(axesList, function (axis) {\n if (!axis.model.get('axisLabel.inside')) {\n var labelUnionRect = estimateLabelUnionRect(axis);\n\n if (labelUnionRect) {\n var dim = axis.isHorizontal() ? 'height' : 'width';\n var margin = axis.model.get('axisLabel.margin');\n gridRect[dim] -= labelUnionRect[dim] + margin;\n\n if (axis.position === 'top') {\n gridRect.y += labelUnionRect.height + margin;\n } else if (axis.position === 'left') {\n gridRect.x += labelUnionRect.width + margin;\n }\n }\n }\n });\n adjustAxes();\n }\n\n function adjustAxes() {\n each(axesList, function (axis) {\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n });\n }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n var axesMapOnDim = this._axesMap[axisType];\n\n if (axesMapOnDim != null) {\n if (axisIndex == null) {\n // Find first axis\n for (var name in axesMapOnDim) {\n if (axesMapOnDim.hasOwnProperty(name)) {\n return axesMapOnDim[name];\n }\n }\n }\n\n return axesMapOnDim[axisIndex];\n }\n};\n/**\n * @return {Array.<module:echarts/coord/Axis>}\n */\n\n\ngridProto.getAxes = function () {\n return this._axesList.slice();\n};\n/**\n * Usage:\n * grid.getCartesian(xAxisIndex, yAxisIndex);\n * grid.getCartesian(xAxisIndex);\n * grid.getCartesian(null, yAxisIndex);\n * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n if (xAxisIndex != null && yAxisIndex != null) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n return this._coordsMap[key];\n }\n\n if (isObject(xAxisIndex)) {\n yAxisIndex = xAxisIndex.yAxisIndex;\n xAxisIndex = xAxisIndex.xAxisIndex;\n } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n return coordList[i];\n }\n }\n};\n\ngridProto.getCartesians = function () {\n return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n var seriesModel = finder.seriesModel;\n var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n var gridModel = finder.gridModel;\n var coordsList = this._coordsList;\n var cartesian;\n var axis;\n\n if (seriesModel) {\n cartesian = seriesModel.coordinateSystem;\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n } else if (xAxisModel && yAxisModel) {\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n } else if (xAxisModel) {\n axis = this.getAxis('x', xAxisModel.componentIndex);\n } else if (yAxisModel) {\n axis = this.getAxis('y', yAxisModel.componentIndex);\n } // Lowest priority.\n else if (gridModel) {\n var grid = gridModel.coordinateSystem;\n\n if (grid === this) {\n cartesian = this._coordsList[0];\n }\n }\n\n return {\n cartesian: cartesian,\n axis: axis\n };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n var coord = this._coordsList[0];\n\n if (coord) {\n return coord.containPoint(point);\n }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n var axisPositionUsed = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n var axesMap = {\n x: {},\n y: {}\n };\n var axesCount = {\n x: 0,\n y: 0\n }; /// Create axis\n\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n if (!axesCount.x || !axesCount.y) {\n // Roll back when there no either x or y axis\n this._axesMap = {};\n this._axesList = [];\n return;\n }\n\n this._axesMap = axesMap; /// Create cartesian2d\n\n each(axesMap.x, function (xAxis, xAxisIndex) {\n each(axesMap.y, function (yAxis, yAxisIndex) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n var cartesian = new Cartesian2D(key);\n cartesian.grid = this;\n cartesian.model = gridModel;\n this._coordsMap[key] = cartesian;\n\n this._coordsList.push(cartesian);\n\n cartesian.addAxis(xAxis);\n cartesian.addAxis(yAxis);\n }, this);\n }, this);\n\n function createAxisCreator(axisType) {\n return function (axisModel, idx) {\n if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n return;\n }\n\n var axisPosition = axisModel.get('position');\n\n if (axisType === 'x') {\n // Fix position\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n // Default bottom of X\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n }\n } else {\n // Fix position\n if (axisPosition !== 'left' && axisPosition !== 'right') {\n // Default left of Y\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\n }\n }\n\n axisPositionUsed[axisPosition] = true;\n var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n axisModel.axis = axis; // Inject axisModel into axis\n\n axis.model = axisModel; // Inject grid info axis\n\n axis.grid = this; // Index of axis, can be used as key\n\n axis.index = idx;\n\n this._axesList.push(axis);\n\n axesMap[axisType][idx] = axis;\n axesCount[axisType]++;\n };\n }\n};\n/**\n * Update cartesian properties from series\n * @param {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n // Reset scale\n each(this._axesList, function (axis) {\n axis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (isCartesian2D(seriesModel)) {\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n return;\n }\n\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n var data = seriesModel.getData();\n var xAxis = cartesian.getAxis('x');\n var yAxis = cartesian.getAxis('y');\n\n if (data.type === 'list') {\n unionExtent(data, xAxis, seriesModel);\n unionExtent(data, yAxis, seriesModel);\n }\n }\n }, this);\n\n function unionExtent(data, axis, seriesModel) {\n each(data.mapDimension(axis.dim, true), function (dim) {\n axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should not include [0.1, 0.5].\n data, getStackedDimension(data, dim));\n });\n }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n var baseAxes = [];\n var otherAxes = [];\n each(this.getCartesians(), function (cartesian) {\n var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n var otherAxis = cartesian.getOtherAxis(baseAxis);\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n });\n return {\n baseAxes: baseAxes,\n otherAxes: otherAxes\n };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n var axisExtent = axis.getExtent();\n var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n return map(axesTypes, function (axisType) {\n var axisModel = seriesModel.getReferringComponents(axisType)[0];\n return axisModel;\n });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n var grids = [];\n ecModel.eachComponent('grid', function (gridModel, idx) {\n var grid = new Grid(gridModel, ecModel, api);\n grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n // should be performed in create stage.\n\n grid.resize(gridModel, api, true);\n gridModel.coordinateSystem = grid;\n grids.push(grid);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (!isCartesian2D(seriesModel)) {\n return;\n }\n\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n var gridModel = xAxisModel.getCoordSysModel();\n var grid = gridModel.coordinateSystem;\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n });\n return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./AxisModel\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid 是在有直角坐标系的时候必须要存在的\n// 所以这里也要被 Cartesian2D 依赖\nvar _default = ComponentModel.extend({\n type: 'grid',\n dependencies: ['xAxis', 'yAxis'],\n layoutMode: 'box',\n\n /**\n * @type {module:echarts/coord/cartesian/Grid}\n */\n coordinateSystem: null,\n defaultOption: {\n show: false,\n zlevel: 0,\n z: 0,\n left: '10%',\n top: 60,\n right: '10%',\n bottom: 60,\n // If grid size contain label\n containLabel: false,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n backgroundColor: 'rgba(0,0,0,0)',\n borderWidth: 1,\n borderColor: '#ccc'\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.<number>} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.<Array>}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.<number>}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {<Array.<number>} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseXML = _parseSVG.parseXML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"./Region\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var encodeScale = json.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = json.features;\n\n for (var f = 0; f < features.length; f++) {\n var feature = features[f];\n var geometry = feature.geometry;\n var coordinates = geometry.coordinates;\n var encodeOffsets = geometry.encodeOffsets;\n\n for (var c = 0; c < coordinates.length; c++) {\n var coordinate = coordinates[c];\n\n if (geometry.type === 'Polygon') {\n coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n } else if (geometry.type === 'MultiPolygon') {\n for (var c2 = 0; c2 < coordinate.length; c2++) {\n var polygon = coordinate[c2];\n coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n }\n }\n }\n } // Has been decoded\n\n\n json.UTF8Encoding = false;\n return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @param {string} nameProperty\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson, nameProperty) {\n decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var coordinates = geo.coordinates;\n var geometries = [];\n\n if (geo.type === 'Polygon') {\n geometries.push({\n type: 'polygon',\n // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n exterior: coordinates[0],\n interiors: coordinates.slice(1)\n });\n }\n\n if (geo.type === 'MultiPolygon') {\n zrUtil.each(coordinates, function (item) {\n if (item[0]) {\n geometries.push({\n type: 'polygon',\n exterior: item[0],\n interiors: item.slice(1)\n });\n }\n });\n }\n\n var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.<string|Object|module:data/DataDimensionInfo>} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.<string>}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.<number>}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.<key, Array.<TypedArray|Array>>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.<string>}\n */\n\n this._nameList = [];\n /**\n * @type {Array.<string>}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.<module:echarts/model/Model>}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.<Object>}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.<Object>}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.<module:zrender/Element>}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.<Array|Object>}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.<number>}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.<Array|TypedArray>}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.<string>} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.<string>} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.<Object|number|Array>} data source or data or data provider.\n * @param {Array.<string>} [nameLIst] The name of a datum is used on data diff and\n * defualt label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.<Array.<*>>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.<string>} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.<string>} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.<number>} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.<string>} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.<string>} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.<string>}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.<Object|string>} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.<Object|string>}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar isString = _util.isString;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar isObject = _util.isObject;\nvar clone = _util.clone;\n\nvar _model = require(\"../../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\nvar _sourceHelper = require(\"./sourceHelper\");\n\nvar guessOrdinal = _sourceHelper.guessOrdinal;\nvar BE_ORDINAL = _sourceHelper.BE_ORDINAL;\n\nvar Source = require(\"../Source\");\n\nvar _dimensionHelper = require(\"./dimensionHelper\");\n\nvar OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;\n\nvar DataDimensionInfo = require(\"../DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @deprecated\n * Use `echarts/data/helper/createDimensions` instead.\n */\n\n/**\n * @see {module:echarts/test/ut/spec/data/completeDimensions}\n *\n * This method builds the relationship between:\n * + \"what the coord sys or series requires (see `sysDims`)\",\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimsDef` and `opt.encodeDef`)\"\n * + \"what the data source provids (see `source`)\".\n *\n * Some guess strategy will be adapted if user does not define something.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @param {Array.<string>} sysDims Necessary dimensions, like ['x', 'y'], which\n * provides not only dim template, but also default order.\n * properties: 'name', 'type', 'displayName'.\n * `name` of each item provides default coord name.\n * [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n * provide dims count that the sysDim required.\n * [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.<Object|string>} [opt.dimsDef] option.series.dimensions User defined dimensions\n * For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n * If not specified, auto find the next available data dim.\n * param source {module:data/Source}\n * param dimCount {number}\n * return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n * If not specified, extra dim names will be:\n * 'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n * If `generateCoordCount` specified, the generated dim names will be:\n * `generateCoord` + 0, `generateCoord` + 1, ...\n * can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.<module:data/DataDimensionInfo>}\n */\nfunction completeDimensions(sysDims, source, opt) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n opt = opt || {};\n sysDims = (sysDims || []).slice();\n var dimsDef = (opt.dimsDef || []).slice();\n var dataDimNameMap = createHashMap();\n var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n var result = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n for (var i = 0; i < dimCount; i++) {\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n name: dimsDef[i]\n });\n var userDimName = dimDefItem.name;\n var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n dataDimNameMap.set(userDimName, i);\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n }\n\n var encodeDef = opt.encodeDef;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n encodeDef.each(function (dataDims, coordDim) {\n dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDef.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDef.set(coordDim, []);\n each(dataDims, function (resultDimIdx, idx) {\n // The input resultDimIdx can be dim name or index.\n isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(result[resultDimIdx], coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItem, sysDimIndex) {\n var coordDim;\n var sysDimItem;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n\n if (isString(sysDimItem)) {\n coordDim = sysDimItem;\n sysDimItem = {};\n } else {\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = clone(sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < result.length && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = result[resultDimIdx];\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (OTHER_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0;\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n\n return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n });\n return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n if (fromZero || map.get(name) != null) {\n var i = 0;\n\n while (map.get(name + i) != null) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar completeDimensions = require(\"./completeDimensions\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.<string|Object>} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.<string|Object>} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.<Object>} dimensionsInfo\n */\nfunction _default(source, opt) {\n opt = opt || {};\n return completeDimensions(opt.coordDimensions || [], source, {\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n encodeDef: opt.encodeDefine || source.encodeDefine,\n dimCount: opt.dimensionsCount,\n encodeDefaulter: opt.encodeDefaulter,\n generateCoord: opt.generateCoord,\n generateCoordCount: opt.generateCoordCount\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.<number>|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isString = _util.isString;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.<string|Object>} dimensionInfoList The same as the input of <module:echarts/data/List>.\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.<Object|string>} coordDimensions [{name: <string>, type: <string>, dimsDef: <Array>}, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/mapDataStorage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.8.0';\nvar dependencies = {\n zrender: '4.3.1'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.<module:echarts/view/Chart>}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.<string, module:echarts/view/Chart>}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.<module:echarts/view/Component>}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.<string, module:echarts/view/Component>}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '<g transform=\"translate(' + x + ',' + y + ')\">' + item.dom + '</g>';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.<Object.<string, Function>>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.<Object.<string, Function>>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.<key, Object>}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.<module:echarts~ECharts>} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.<string|Object>}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.<Object>|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphicUtil = require(\"./util/graphic\");\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _env;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = require(\"./data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.<number>} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.<string>`\n * `getCategories() => Array.<string>`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(width)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(height)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var coordLayout = cartesian.grid.getRect();\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeBackgroundPoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n largePoints[pointsOffset++] = coord[0];\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeRender = pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.<number>}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\n };\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n opts = opts || {};\n zrUtil.defaults(opts, {\n text: 'loading',\n textColor: '#000',\n fontSize: '12px',\n maskColor: 'rgba(255, 255, 255, 0.8)',\n showSpinner: true,\n color: '#c23531',\n spinnerRadius: 10,\n lineWidth: 5,\n zlevel: 0\n });\n var group = new graphic.Group();\n var mask = new graphic.Rect({\n style: {\n fill: opts.maskColor\n },\n zlevel: opts.zlevel,\n z: 10000\n });\n group.add(mask);\n var font = opts.fontSize + ' sans-serif';\n var labelRect = new graphic.Rect({\n style: {\n fill: 'none',\n text: opts.text,\n font: font,\n textPosition: 'right',\n textDistance: 10,\n textFill: opts.textColor\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n group.add(labelRect);\n\n if (opts.showSpinner) {\n var arc = new graphic.Arc({\n shape: {\n startAngle: -PI / 2,\n endAngle: -PI / 2 + 0.1,\n r: opts.spinnerRadius\n },\n style: {\n stroke: opts.color,\n lineCap: 'round',\n lineWidth: opts.lineWidth\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n arc.animateShape(true).when(1000, {\n endAngle: PI * 3 / 2\n }).start('circularInOut');\n arc.animateShape(true).when(1000, {\n startAngle: PI * 3 / 2\n }).delay(300).start('circularInOut');\n group.add(arc);\n } // Inject resize\n\n\n group.resize = function () {\n var textWidth = textContain.getWidth(opts.text, font);\n var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n // textDistance needs to be calculated when both animation and text exist\n\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n - (opts.showSpinner ? 0 : textWidth / 2);\n var cy = api.getHeight() / 2;\n opts.showSpinner && arc.setShape({\n cx: cx,\n cy: cy\n });\n labelRect.setShape({\n x: cx - r,\n y: cy - r,\n width: r * 2,\n height: r * 2\n });\n mask.setShape({\n x: 0,\n y: 0,\n width: api.getWidth(),\n height: api.getHeight()\n });\n };\n\n group.resize();\n return group;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.<string, Array.<module:echarts/model/Model>>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n init: function (option, parentModel, theme, optionManager) {\n theme = theme || {};\n this.option = null; // Mark as not initialized.\n\n /**\n * @type {module:echarts/model/Model}\n * @private\n */\n\n this._theme = new Model(theme);\n /**\n * @type {module:echarts/model/OptionManager}\n */\n\n this._optionManager = optionManager;\n },\n setOption: function (option, optionPreprocessorFuncs) {\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n this.resetOption(null);\n },\n\n /**\n * @param {string} type null/undefined: reset all.\n * 'recreate': force recreate all.\n * 'timeline': only reset timeline option\n * 'media': only reset media query option\n * @return {boolean} Whether option changed.\n */\n resetOption: function (type) {\n var optionChanged = false;\n var optionManager = this._optionManager;\n\n if (!type || type === 'recreate') {\n var baseOption = optionManager.mountOption(type === 'recreate');\n\n if (!this.option || type === 'recreate') {\n initBase.call(this, baseOption);\n } else {\n this.restoreData();\n this.mergeOption(baseOption);\n }\n\n optionChanged = true;\n }\n\n if (type === 'timeline' || type === 'media') {\n this.restoreData();\n }\n\n if (!type || type === 'recreate' || type === 'timeline') {\n var timelineOption = optionManager.getTimelineOption(this);\n timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n }\n\n if (!type || type === 'recreate' || type === 'media') {\n var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n if (mediaOptions.length) {\n each(mediaOptions, function (mediaOption) {\n this.mergeOption(mediaOption, optionChanged = true);\n }, this);\n }\n }\n\n return optionChanged;\n },\n\n /**\n * @protected\n */\n mergeOption: function (newOption) {\n var option = this.option;\n var componentsMap = this._componentsMap;\n var newCptTypes = [];\n resetSourceDefaulter(this); // If no component class, merge directly.\n // For example: color, animaiton options, etc.\n\n each(newOption, function (componentOption, mainType) {\n if (componentOption == null) {\n return;\n }\n\n if (!ComponentModel.hasClass(mainType)) {\n // globalSettingTask.dirty();\n option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n } else if (mainType) {\n newCptTypes.push(mainType);\n }\n });\n ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n function visitComponent(mainType, dependencies) {\n var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n each(mapResult, function (item, index) {\n var opt = item.option;\n\n if (isObject(opt)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n }\n });\n var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n option[mainType] = [];\n componentsMap.set(mainType, []);\n each(mapResult, function (resultItem, index) {\n var componentModel = resultItem.exist;\n var newCptOption = resultItem.option;\n assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n // see removeEdgeAndAdd in topologicalTravel and\n // ComponentModel.getAllClassMainTypes.\n\n if (!newCptOption) {\n componentModel.mergeOption({}, this);\n componentModel.optionUpdated({}, false);\n } else {\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n if (componentModel && componentModel.constructor === ComponentModelClass) {\n componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n componentModel.mergeOption(newCptOption, this);\n componentModel.optionUpdated(newCptOption, false);\n } else {\n // PENDING Global as parent ?\n var extraOpt = extend({\n dependentModels: dependentModels,\n componentIndex: index\n }, resultItem.keyInfo);\n componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n extend(componentModel, extraOpt);\n componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n // newCptOption has been used as componentModel.option\n // and may be merged with theme and default, so pass null\n // to avoid confusion.\n\n componentModel.optionUpdated(null, true);\n }\n }\n\n componentsMap.get(mainType)[index] = componentModel;\n option[mainType][index] = componentModel.option;\n }, this); // Backup series for filtering.\n\n if (mainType === 'series') {\n createSeriesIndices(this, componentsMap.get('series'));\n }\n }\n\n this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n },\n\n /**\n * Get option for output (cloned option and inner info removed)\n * @public\n * @return {Object}\n */\n getOption: function () {\n var option = clone(this.option);\n each(option, function (opts, mainType) {\n if (ComponentModel.hasClass(mainType)) {\n var opts = modelUtil.normalizeToArray(opts);\n\n for (var i = opts.length - 1; i >= 0; i--) {\n // Remove options with inner id.\n if (modelUtil.isIdInner(opts[i])) {\n opts.splice(i, 1);\n }\n }\n\n option[mainType] = opts;\n }\n });\n delete option[OPTION_INNER_KEY];\n return option;\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getTheme: function () {\n return this._theme;\n },\n\n /**\n * @param {string} mainType\n * @param {number} [idx=0]\n * @return {module:echarts/model/Component}\n */\n getComponent: function (mainType, idx) {\n var list = this._componentsMap.get(mainType);\n\n if (list) {\n return list[idx || 0];\n }\n },\n\n /**\n * If none of index and id and name used, return all components with mainType.\n * @param {Object} condition\n * @param {string} condition.mainType\n * @param {string} [condition.subType] If ignore, only query by mainType\n * @param {number|Array.<number>} [condition.index] Either input index or id or name.\n * @param {string|Array.<string>} [condition.id] Either input index or id or name.\n * @param {string|Array.<string>} [condition.name] Either input index or id or name.\n * @return {Array.<module:echarts/model/Component>}\n */\n queryComponents: function (condition) {\n var mainType = condition.mainType;\n\n if (!mainType) {\n return [];\n }\n\n var index = condition.index;\n var id = condition.id;\n var name = condition.name;\n\n var cpts = this._componentsMap.get(mainType);\n\n if (!cpts || !cpts.length) {\n return [];\n }\n\n var result;\n\n if (index != null) {\n if (!isArray(index)) {\n index = [index];\n }\n\n result = filter(map(index, function (idx) {\n return cpts[idx];\n }), function (val) {\n return !!val;\n });\n } else if (id != null) {\n var isIdArray = isArray(id);\n result = filter(cpts, function (cpt) {\n return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n });\n } else if (name != null) {\n var isNameArray = isArray(name);\n result = filter(cpts, function (cpt) {\n return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n });\n } else {\n // Return all components with mainType\n result = cpts.slice();\n }\n\n return filterBySubType(result, condition);\n },\n\n /**\n * The interface is different from queryComponents,\n * which is convenient for inner usage.\n *\n * @usage\n * var result = findComponents(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n * );\n * var result = findComponents(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n * );\n * var result = findComponents(\n * {mainType: 'series',\n * filter: function (model, index) {...}}\n * );\n * // result like [component0, componnet1, ...]\n *\n * @param {Object} condition\n * @param {string} condition.mainType Mandatory.\n * @param {string} [condition.subType] Optional.\n * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n * where xxx is mainType.\n * If query attribute is null/undefined or has no index/id/name,\n * do not filtering by query conditions, which is convenient for\n * no-payload situations or when target of action is global.\n * @param {Function} [condition.filter] parameter: component, return boolean.\n * @return {Array.<module:echarts/model/Component>}\n */\n findComponents: function (condition) {\n var query = condition.query;\n var mainType = condition.mainType;\n var queryCond = getQueryCond(query);\n var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n return doFilter(filterBySubType(result, condition));\n\n function getQueryCond(q) {\n var indexAttr = mainType + 'Index';\n var idAttr = mainType + 'Id';\n var nameAttr = mainType + 'Name';\n return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n mainType: mainType,\n // subType will be filtered finally.\n index: q[indexAttr],\n id: q[idAttr],\n name: q[nameAttr]\n } : null;\n }\n\n function doFilter(res) {\n return condition.filter ? filter(res, condition.filter) : res;\n }\n },\n\n /**\n * @usage\n * eachComponent('legend', function (legendModel, index) {\n * ...\n * });\n * eachComponent(function (componentType, model, index) {\n * // componentType does not include subType\n * // (componentType is 'xxx' but not 'xxx.aa')\n * });\n * eachComponent(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n * function (model, index) {...}\n * );\n * eachComponent(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n * function (model, index) {...}\n * );\n *\n * @param {string|Object=} mainType When mainType is object, the definition\n * is the same as the method 'findComponents'.\n * @param {Function} cb\n * @param {*} context\n */\n eachComponent: function (mainType, cb, context) {\n var componentsMap = this._componentsMap;\n\n if (typeof mainType === 'function') {\n context = cb;\n cb = mainType;\n componentsMap.each(function (components, componentType) {\n each(components, function (component, index) {\n cb.call(context, componentType, component, index);\n });\n });\n } else if (isString(mainType)) {\n each(componentsMap.get(mainType), cb, context);\n } else if (isObject(mainType)) {\n var queryResult = this.findComponents(mainType);\n each(queryResult, cb, context);\n }\n },\n\n /**\n * @param {string} name\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeriesByName: function (name) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.name === name;\n });\n },\n\n /**\n * @param {number} seriesIndex\n * @return {module:echarts/model/Series}\n */\n getSeriesByIndex: function (seriesIndex) {\n return this._componentsMap.get('series')[seriesIndex];\n },\n\n /**\n * Get series list before filtered by type.\n * FIXME: rename to getRawSeriesByType?\n *\n * @param {string} subType\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeriesByType: function (subType) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.subType === subType;\n });\n },\n\n /**\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeries: function () {\n return this._componentsMap.get('series').slice();\n },\n\n /**\n * @return {number}\n */\n getSeriesCount: function () {\n return this._componentsMap.get('series').length;\n },\n\n /**\n * After filtering, series may be different\n * frome raw series.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachSeries: function (cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n cb.call(context, series, rawSeriesIndex);\n }, this);\n },\n\n /**\n * Iterate raw series before filtered.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeries: function (cb, context) {\n each(this._componentsMap.get('series'), cb, context);\n },\n\n /**\n * After filtering, series may be different.\n * frome raw series.\n *\n * @param {string} subType.\n * @param {Function} cb\n * @param {*} context\n */\n eachSeriesByType: function (subType, cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n if (series.subType === subType) {\n cb.call(context, series, rawSeriesIndex);\n }\n }, this);\n },\n\n /**\n * Iterate raw series before filtered of given type.\n *\n * @parma {string} subType\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeriesByType: function (subType, cb, context) {\n return each(this.getSeriesByType(subType), cb, context);\n },\n\n /**\n * @param {module:echarts/model/Series} seriesModel\n */\n isSeriesFiltered: function (seriesModel) {\n assertSeriesInitialized(this);\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n },\n\n /**\n * @return {Array.<number>}\n */\n getCurrentSeriesIndices: function () {\n return (this._seriesIndices || []).slice();\n },\n\n /**\n * @param {Function} cb\n * @param {*} context\n */\n filterSeries: function (cb, context) {\n assertSeriesInitialized(this);\n var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n createSeriesIndices(this, filteredSeries);\n },\n restoreData: function (payload) {\n var componentsMap = this._componentsMap;\n createSeriesIndices(this, componentsMap.get('series'));\n var componentTypes = [];\n componentsMap.each(function (components, componentType) {\n componentTypes.push(componentType);\n });\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n each(componentsMap.get(componentType), function (component) {\n (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n });\n });\n }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n if (payload) {\n var index = payload.seiresIndex;\n var id = payload.seriesId;\n var name = payload.seriesName;\n return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n // PENDING\n // NOT use `colorLayer` in theme if option has `color`\n var notMergeColorLayer = option.color && !option.colorLayer;\n each(theme, function (themeItem, name) {\n if (name === 'colorLayer' && notMergeColorLayer) {\n return;\n } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n if (!ComponentModel.hasClass(name)) {\n if (typeof themeItem === 'object') {\n option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n } else {\n if (option[name] == null) {\n option[name] = themeItem;\n }\n }\n }\n });\n}\n\nfunction initBase(baseOption) {\n baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n this.option = {};\n this.option[OPTION_INNER_KEY] = 1;\n /**\n * Init with series: [], in case of calling findSeries method\n * before series initialized.\n * @type {Object.<string, Array.<module:echarts/model/Model>>}\n * @private\n */\n\n this._componentsMap = createHashMap({\n series: []\n });\n /**\n * Mapping between filtered series list and raw series list.\n * key: filtered series indices, value: raw series indices.\n * @type {Array.<nubmer>}\n * @private\n */\n\n this._seriesIndices;\n this._seriesIndicesMap;\n mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n merge(baseOption, globalDefault, false);\n this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.<string>|string} types model types\n * @return {Object} key: {string} type, value: {Array.<Object>} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n if (!isArray(types)) {\n types = types ? [types] : [];\n }\n\n var ret = {};\n each(types, function (type) {\n ret[type] = (componentsMap.get(type) || []).slice();\n });\n return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n return series.componentIndex;\n }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n // Using hasOwnProperty for restrict. Consider\n // subType is undefined in user payload.\n return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n return cpt.subType === condition.subType;\n }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n /**\n * @type {module:echarts/model/Model}\n * @readOnly\n */\n this.parentModel = parentModel;\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n\n this.ecModel = ecModel;\n /**\n * @type {Object}\n * @protected\n */\n\n this.option = option; // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n}\n\nModel.prototype = {\n constructor: Model,\n\n /**\n * Model 的初始化函数\n * @param {Object} option\n */\n init: null,\n\n /**\n * 从新的 Option merge\n */\n mergeOption: function (option) {\n zrUtil.merge(this.option, option, true);\n },\n\n /**\n * @param {string|Array.<string>} path\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n get: function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n\n return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n },\n\n /**\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n getShallow: function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n var parentModel = !ignoreParent && getParent(this, key);\n\n if (val == null && parentModel) {\n val = parentModel.getShallow(key);\n }\n\n return val;\n },\n\n /**\n * @param {string|Array.<string>} [path]\n * @param {module:echarts/model/Model} [parentModel]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path, parentModel) {\n var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n var thisParentModel;\n parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n return new Model(obj, parentModel, this.ecModel);\n },\n\n /**\n * If model has option\n */\n isEmpty: function () {\n return this.option == null;\n },\n restoreData: function () {},\n // Pending\n clone: function () {\n var Ctor = this.constructor;\n return new Ctor(zrUtil.clone(this.option));\n },\n setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n },\n // If path is null/undefined, return null/undefined.\n parsePath: function (path) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n return path;\n },\n\n /**\n * @param {Function} getParentMethod\n * param {Array.<string>|string} path\n * return {module:echarts/model/Model}\n */\n customizeGetParent: function (getParentMethod) {\n inner(this).getParent = getParentMethod;\n },\n isAnimationEnabled: function () {\n if (!env.node) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n } // obj could be number/string/... (like 0)\n\n\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n if (obj == null) {\n break;\n }\n }\n\n if (obj == null && parentModel) {\n obj = parentModel.get(pathArr);\n }\n\n return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n var getParentMethod = inner(model).getParent;\n return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n * An object that contains definitions of components. For example:\n * var option = {\n * title: {...},\n * legend: {...},\n * visualMap: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * };\n *\n * [rawOption]:\n *\n * An object input to echarts.setOption. 'rawOption' may be an\n * 'option', or may be an object contains multi-options. For example:\n * var option = {\n * baseOption: {\n * title: {...},\n * legend: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * },\n * timeline: {...},\n * options: [\n * {title: {...}, series: {data: [...]}},\n * {title: {...}, series: {data: [...]}},\n * ...\n * ],\n * media: [\n * {\n * query: {maxWidth: 320},\n * option: {series: {x: 20}, visualMap: {show: false}}\n * },\n * {\n * query: {minWidth: 320, maxWidth: 720},\n * option: {series: {x: 500}, visualMap: {show: true}}\n * },\n * {\n * option: {series: {x: 1200}, visualMap: {show: true}}\n * }\n * ]\n * };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n this._api = api;\n /**\n * @private\n * @type {Array.<number>}\n */\n\n this._timelineOptions = [];\n /**\n * @private\n * @type {Array.<Object>}\n */\n\n this._mediaList = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._mediaDefault;\n /**\n * -1, means default.\n * empty means no media.\n * @private\n * @type {Array.<number>}\n */\n\n this._currentMediaIndices = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._optionBackup;\n /**\n * @private\n * @type {Object}\n */\n\n this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n constructor: OptionManager,\n\n /**\n * @public\n * @param {Object} rawOption Raw option.\n * @param {module:echarts/model/Global} ecModel\n * @param {Array.<Function>} optionPreprocessorFuncs\n * @return {Object} Init option\n */\n setOption: function (rawOption, optionPreprocessorFuncs) {\n if (rawOption) {\n // That set dat primitive is dangerous if user reuse the data when setOption again.\n zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n });\n } // Caution: some series modify option data, if do not clone,\n // it should ensure that the repeat modify correctly\n // (create a new object when modify itself).\n\n\n rawOption = clone(rawOption); // FIXME\n // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。\n\n var oldOptionBackup = this._optionBackup;\n var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n if (oldOptionBackup) {\n // Only baseOption can be merged.\n mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n // that is, if you `setOption` twice and both has timeline options, the latter\n // timeline opitons will not be merged to the formers, but just substitude them.\n\n if (newParsedOption.timelineOptions.length) {\n oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n }\n\n if (newParsedOption.mediaList.length) {\n oldOptionBackup.mediaList = newParsedOption.mediaList;\n }\n\n if (newParsedOption.mediaDefault) {\n oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n }\n } else {\n this._optionBackup = newParsedOption;\n }\n },\n\n /**\n * @param {boolean} isRecreate\n * @return {Object}\n */\n mountOption: function (isRecreate) {\n var optionBackup = this._optionBackup; // TODO\n // 如果没有reset功能则不clone。\n\n this._timelineOptions = map(optionBackup.timelineOptions, clone);\n this._mediaList = map(optionBackup.mediaList, clone);\n this._mediaDefault = clone(optionBackup.mediaDefault);\n this._currentMediaIndices = [];\n return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n // called, and is merged into every new option by inner method `mergeOption`\n // each time `setOption` called, can be only used in `isRecreate`, because\n // its reliability is under suspicion. In other cases option merge is\n // performed by `model.mergeOption`.\n ? optionBackup.baseOption : this._newBaseOption);\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n */\n getTimelineOption: function (ecModel) {\n var option;\n var timelineOptions = this._timelineOptions;\n\n if (timelineOptions.length) {\n // getTimelineOption can only be called after ecModel inited,\n // so we can get currentIndex from timelineModel.\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel) {\n option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n }\n }\n\n return option;\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Array.<Object>}\n */\n getMediaOption: function (ecModel) {\n var ecWidth = this._api.getWidth();\n\n var ecHeight = this._api.getHeight();\n\n var mediaList = this._mediaList;\n var mediaDefault = this._mediaDefault;\n var indices = [];\n var result = []; // No media defined.\n\n if (!mediaList.length && !mediaDefault) {\n return result;\n } // Multi media may be applied, the latter defined media has higher priority.\n\n\n for (var i = 0, len = mediaList.length; i < len; i++) {\n if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n indices.push(i);\n }\n } // FIXME\n // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。\n\n\n if (!indices.length && mediaDefault) {\n indices = [-1];\n }\n\n if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n result = map(indices, function (index) {\n return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n });\n } // Otherwise return nothing.\n\n\n this._currentMediaIndices = indices;\n return result;\n }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n var timelineOptions = [];\n var mediaList = [];\n var mediaDefault;\n var baseOption; // Compatible with ec2.\n\n var timelineOpt = rawOption.timeline;\n\n if (rawOption.baseOption) {\n baseOption = rawOption.baseOption;\n } // For timeline\n\n\n if (timelineOpt || rawOption.options) {\n baseOption = baseOption || {};\n timelineOptions = (rawOption.options || []).slice();\n } // For media query\n\n\n if (rawOption.media) {\n baseOption = baseOption || {};\n var media = rawOption.media;\n each(media, function (singleMedia) {\n if (singleMedia && singleMedia.option) {\n if (singleMedia.query) {\n mediaList.push(singleMedia);\n } else if (!mediaDefault) {\n // Use the first media default.\n mediaDefault = singleMedia;\n }\n }\n });\n } // For normal option\n\n\n if (!baseOption) {\n baseOption = rawOption;\n } // Set timelineOpt to baseOption in ec3,\n // which is convenient for merge option.\n\n\n if (!baseOption.timeline) {\n baseOption.timeline = timelineOpt;\n } // Preprocess.\n\n\n each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n return media.option;\n })), function (option) {\n each(optionPreprocessorFuncs, function (preProcess) {\n preProcess(option, isNew);\n });\n });\n return {\n baseOption: baseOption,\n timelineOptions: timelineOptions,\n mediaDefault: mediaDefault,\n mediaList: mediaList\n };\n}\n/**\n * @see <http://www.w3.org/TR/css3-mediaqueries/#media1>\n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n var realMap = {\n width: ecWidth,\n height: ecHeight,\n aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n };\n var applicatable = true;\n zrUtil.each(query, function (value, attr) {\n var matched = attr.match(QUERY_REG);\n\n if (!matched || !matched[1] || !matched[2]) {\n return;\n }\n\n var operator = matched[1];\n var realAttr = matched[2].toLowerCase();\n\n if (!compare(realMap[realAttr], value, operator)) {\n applicatable = false;\n }\n });\n return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n if (operator === 'min') {\n return real >= expect;\n } else if (operator === 'max') {\n return real <= expect;\n } else {\n // Equals\n return real === expect;\n }\n}\n\nfunction indicesEquals(indices1, indices2) {\n // indices is always order by asc and has only finite number.\n return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n * (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n newOption = newOption || {};\n each(newOption, function (newCptOpt, mainType) {\n if (newCptOpt == null) {\n return;\n }\n\n var oldCptOpt = oldOption[mainType];\n\n if (!ComponentModel.hasClass(mainType)) {\n oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n } else {\n newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n oldOption[mainType] = map(mapResult, function (item) {\n return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n });\n }\n });\n}\n\nvar _default = OptionManager;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n type: 'series.__base__',\n\n /**\n * @readOnly\n */\n seriesIndex: 0,\n // coodinateSystem will be injected in the echarts/CoordinateSystem\n coordinateSystem: null,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * legend visual provider to the legend component\n * @type {Object}\n */\n // PENDING\n legendVisualProvider: null,\n\n /**\n * Access path of color for visual\n */\n visualColorAccessPath: 'itemStyle.color',\n\n /**\n * Access path of borderColor for visual\n */\n visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n init: function (option, parentModel, ecModel, extraOpt) {\n /**\n * @type {number}\n * @readOnly\n */\n this.seriesIndex = this.componentIndex;\n this.dataTask = createTask({\n count: dataTaskCount,\n reset: dataTaskReset\n });\n this.dataTask.context = {\n model: this\n };\n this.mergeDefaultAndTheme(option, ecModel);\n prepareSource(this);\n var data = this.getInitialData(option, ecModel);\n wrapData(data, this);\n this.dataTask.context.data = data;\n\n /**\n * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n * @private\n */\n inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n // dataBeforeProcessed by cloneShallow), cloneShallow will\n // cause data.graph.data !== data when using\n // module:echarts/data/Graph or module:echarts/data/Tree.\n // See module:echarts/data/helper/linkList\n // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n // init or merge stage, because the data can be restored. So we do not `restoreData`\n // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n // Call `seriesModel.getRawData()` instead.\n // this.restoreData();\n\n autoSeriesName(this);\n },\n\n /**\n * Util for merge default and theme to option\n * @param {Object} option\n * @param {module:echarts/model/Global} ecModel\n */\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n // But if name duplicate between series subType\n // (for example: parallel) add component mainType,\n // add suffix 'Series'.\n\n var themeSubType = this.subType;\n\n if (ComponentModel.hasClass(themeSubType)) {\n themeSubType += 'Series';\n }\n\n zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n this.fillDataTextStyle(option.data);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (newSeriesOption, ecModel) {\n // this.settingTask.dirty();\n newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n this.fillDataTextStyle(newSeriesOption.data);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n }\n\n prepareSource(this);\n var data = this.getInitialData(newSeriesOption, ecModel);\n wrapData(data, this);\n this.dataTask.dirty();\n this.dataTask.context.data = data;\n inner(this).dataBeforeProcessed = data;\n autoSeriesName(this);\n },\n fillDataTextStyle: function (data) {\n // Default data label emphasis `show`\n // FIXME Tree structure data ?\n // FIXME Performance ?\n if (data && !zrUtil.isTypedArray(data)) {\n var props = ['show'];\n\n for (var i = 0; i < data.length; i++) {\n if (data[i] && data[i].label) {\n modelUtil.defaultEmphasis(data[i], 'label', props);\n }\n }\n }\n },\n\n /**\n * Init a data structure from data related option in series\n * Must be overwritten\n */\n getInitialData: function () {},\n\n /**\n * Append data to list\n * @param {Object} params\n * @param {Array|TypedArray} params.data\n */\n appendData: function (params) {\n // FIXME ???\n // (1) If data from dataset, forbidden append.\n // (2) support append data of dataset.\n var data = this.getRawData();\n data.appendData(params.data);\n },\n\n /**\n * Consider some method like `filter`, `map` need make new data,\n * We should make sure that `seriesModel.getData()` get correct\n * data in the stream procedure. So we fetch data from upstream\n * each time `task.perform` called.\n * @param {string} [dataType]\n * @return {module:echarts/data/List}\n */\n getData: function (dataType) {\n var task = getCurrentTask(this);\n\n if (task) {\n var data = task.context.data;\n return dataType == null ? data : data.getLinkedData(dataType);\n } else {\n // When series is not alive (that may happen when click toolbox\n // restore or setOption with not merge mode), series data may\n // be still need to judge animation or something when graphic\n // elements want to know whether fade out.\n return inner(this).data;\n }\n },\n\n /**\n * @param {module:echarts/data/List} data\n */\n setData: function (data) {\n var task = getCurrentTask(this);\n\n if (task) {\n var context = task.context; // Consider case: filter, data sample.\n\n if (context.data !== data && task.modifyOutputEnd) {\n task.setOutputEnd(data.count());\n }\n\n context.outputData = data; // Caution: setData should update context.data,\n // Because getData may be called multiply in a\n // single stage and expect to get the data just\n // set. (For example, AxisProxy, x y both call\n // getData and setDate sequentially).\n // So the context.data should be fetched from\n // upstream each time when a stage starts to be\n // performed.\n\n if (task !== this.dataTask) {\n context.data = data;\n }\n }\n\n inner(this).data = data;\n },\n\n /**\n * @see {module:echarts/data/helper/sourceHelper#getSource}\n * @return {module:echarts/data/Source} source\n */\n getSource: function () {\n return getSource(this);\n },\n\n /**\n * Get data before processed\n * @return {module:echarts/data/List}\n */\n getRawData: function () {\n return inner(this).dataBeforeProcessed;\n },\n\n /**\n * Get base axis if has coordinate system and has axis.\n * By default use coordSys.getBaseAxis();\n * Can be overrided for some chart.\n * @return {type} description\n */\n getBaseAxis: function () {\n var coordSys = this.coordinateSystem;\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n },\n // FIXME\n\n /**\n * Default tooltip formatter\n *\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n * 'html' is used for rendering tooltip in extra DOM form, and the result\n * string is used as DOM HTML content.\n * 'richText' is used for rendering tooltip in rich text form, for those where\n * DOM operation is not supported.\n * @return {Object} formatted tooltip with `html` and `markers`\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var series = this;\n renderMode = renderMode || 'html';\n var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n var isRichText = renderMode === 'richText';\n var markers = {};\n var markerId = 0;\n\n function formatArrayValue(value) {\n // ??? TODO refactor these logic.\n // check: category-no-encode-has-axis-data in dataset.html\n var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n var dimItem = data.getDimensionInfo(idx);\n return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n }, 0);\n var result = [];\n tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n }) // By default, all dims is used on tooltip.\n : zrUtil.each(value, setEachItem);\n\n function setEachItem(val, dim) {\n var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n return;\n }\n\n var dimType = dimInfo.type;\n var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n var dimHead = getTooltipMarker({\n color: color,\n type: 'subItem',\n renderMode: renderMode,\n markerId: markName\n });\n var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n valStr && result.push(valStr);\n\n if (isRichText) {\n markers[markName] = color;\n ++markerId;\n }\n }\n\n var newLine = vertially ? isRichText ? '\\n' : '<br/>' : '';\n var content = newLine + result.join(newLine || ', ');\n return {\n renderMode: renderMode,\n content: content,\n style: markers\n };\n }\n\n function formatSingleValue(val) {\n // return encodeHTML(addCommas(val));\n return {\n renderMode: renderMode,\n content: encodeHTML(addCommas(val)),\n style: markers\n };\n }\n\n var data = this.getData();\n var tooltipDims = data.mapDimension('defaultedTooltip', true);\n var tooltipDimLen = tooltipDims.length;\n var value = this.getRawValue(dataIndex);\n var isValueArr = zrUtil.isArray(value);\n var color = data.getItemVisual(dataIndex, 'color');\n\n if (zrUtil.isObject(color) && color.colorStops) {\n color = (color.colorStops[0] || {}).color;\n }\n\n color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n var content = formattedValue.content;\n var markName = series.seriesIndex + 'at' + markerId;\n var colorEl = getTooltipMarker({\n color: color,\n type: 'item',\n renderMode: renderMode,\n markerId: markName\n });\n markers[markName] = color;\n ++markerId;\n var name = data.getName(dataIndex);\n var seriesName = this.name;\n\n if (!modelUtil.isNameSpecified(this)) {\n seriesName = '';\n }\n\n seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n return {\n html: html,\n markers: markers\n };\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var animationEnabled = this.getShallow('animation');\n\n if (animationEnabled) {\n if (this.getData().count() > this.getShallow('animationThreshold')) {\n animationEnabled = false;\n }\n }\n\n return animationEnabled;\n },\n restoreData: function () {\n this.dataTask.dirty();\n },\n getColorFromPalette: function (name, scope, requestColorNum) {\n var ecModel = this.ecModel; // PENDING\n\n var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n if (!color) {\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n }\n\n return color;\n },\n\n /**\n * Use `data.mapDimension(coordDim, true)` instead.\n * @deprecated\n */\n coordDimToDataDim: function (coordDim) {\n return this.getRawData().mapDimension(coordDim, true);\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressive: function () {\n return this.get('progressive');\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressiveThreshold: function () {\n return this.get('progressiveThreshold');\n },\n\n /**\n * Get data indices for show tooltip content. See tooltip.\n * @abstract\n * @param {Array.<string>|string} dim\n * @param {Array.<number>} value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis\n * @return {Object} {dataIndices, nestestValue}.\n */\n getAxisTooltipData: null,\n\n /**\n * See tooltip.\n * @abstract\n * @param {number} dataIndex\n * @return {Array.<number>} Point of tooltip. null/undefined can be returned.\n */\n getTooltipPosition: null,\n\n /**\n * @see {module:echarts/stream/Scheduler}\n */\n pipeTask: null,\n\n /**\n * Convinient for override in extended class.\n * @protected\n * @type {Function}\n */\n preventIncremental: null,\n\n /**\n * @public\n * @readOnly\n * @type {Object}\n */\n pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n // User specified name has higher priority, otherwise it may cause\n // series can not be queried unexpectedly.\n var name = seriesModel.name;\n\n if (!modelUtil.isNameSpecified(seriesModel)) {\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\n }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n var data = seriesModel.getRawData();\n var dataDims = data.mapDimension('seriesName', true);\n var nameArr = [];\n zrUtil.each(dataDims, function (dataDim) {\n var dimInfo = data.getDimensionInfo(dataDim);\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\n });\n return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n var seriesModel = context.model;\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\n return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n // Avoid repead cloneShallow when data just created in reset.\n if (context.outputData && param.end > context.outputData.count()) {\n context.model.getRawData().cloneShallow(context.outputData);\n }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n });\n}\n\nfunction onDataSelfChange(seriesModel) {\n var task = getCurrentTask(seriesModel);\n\n if (task) {\n // Consider case: filter, selectRange\n task.setOutputEnd(this.count());\n }\n}\n\nfunction getCurrentTask(seriesModel) {\n var scheduler = (seriesModel.ecModel || {}).scheduler;\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n if (pipeline) {\n // When pipline finished, the currrentTask keep the last\n // task (renderTask).\n var task = pipeline.currentTask;\n\n if (task) {\n var agentStubMap = task.agentStubMap;\n\n if (agentStubMap) {\n task = agentStubMap.get(seriesModel.uid);\n }\n }\n\n return task;\n }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n platform = navigator.platform || '';\n}\n\nvar _default = {\n // backgroundColor: 'rgba(0,0,0,0)',\n // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n // Light colors:\n // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n // Dark colors:\n color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n // If xAxis and yAxis declared, grid is created by default.\n // grid: {},\n textStyle: {\n // color: '#000',\n // decoration: 'none',\n // PENDING\n fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n // fontFamily: 'Arial, Verdana, sans-serif',\n fontSize: 12,\n fontStyle: 'normal',\n fontWeight: 'normal'\n },\n // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n // Default is source-over\n blendMode: null,\n animation: 'auto',\n animationDuration: 1000,\n animationDurationUpdate: 300,\n animationEasing: 'exponentialOut',\n animationEasingUpdate: 'cubicOut',\n animationThreshold: 2000,\n // Configuration for progressive/incremental rendering\n progressiveThreshold: 3000,\n progressive: 400,\n // Threshold of if use single hover layer to optimize.\n // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n // which is unexpected.\n // see example <echarts/test/heatmap-large.html>.\n hoverLayerThreshold: 3000,\n // See: module:echarts/scale/Time\n useUTC: false\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n getAreaStyle: function (excludes, includes) {\n return getAreaStyle(this, excludes, includes);\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n getBoxLayoutParams: function () {\n return {\n left: this.get('left'),\n top: this.get('top'),\n right: this.get('right'),\n bottom: this.get('bottom'),\n width: this.get('width'),\n height: this.get('height')\n };\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n var paletteNum = colors.length; // TODO colors must be in order\n\n for (var i = 0; i < paletteNum; i++) {\n if (colors[i].length > requestColorNum) {\n return colors[i];\n }\n }\n\n return colors[paletteNum - 1];\n}\n\nvar _default = {\n clearColorPalette: function () {\n inner(this).colorIdx = 0;\n inner(this).colorNameMap = {};\n },\n\n /**\n * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n * twise with the same parameters will get different result.\n * @param {Object} [scope=this]\n * @param {Object} [requestColorNum]\n * @return {string} color string.\n */\n getColorFromPalette: function (name, scope, requestColorNum) {\n scope = scope || this;\n var scopeFields = inner(scope);\n var colorIdx = scopeFields.colorIdx || 0;\n var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n if (colorNameMap.hasOwnProperty(name)) {\n return colorNameMap[name];\n }\n\n var defaultColorPalette = normalizeToArray(this.get('color', true));\n var layeredColorPalette = this.get('colorLayer', true);\n var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n colorPalette = colorPalette || defaultColorPalette;\n\n if (!colorPalette || !colorPalette.length) {\n return;\n }\n\n var color = colorPalette[colorIdx];\n\n if (name) {\n colorNameMap[name] = color;\n }\n\n scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n return color;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty function\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n getItemStyle: function (excludes, includes) {\n var style = getItemStyle(this, excludes, includes);\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n return style;\n },\n getBorderLineDash: function () {\n var lineType = this.get('borderType');\n return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getLineStyle: function (excludes) {\n var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n // erase the previous style when assigning to el.style.\n\n style.lineDash = this.getLineDash(style.lineWidth);\n return style;\n },\n getLineDash: function (lineWidth) {\n if (lineWidth == null) {\n lineWidth = 1;\n }\n\n var lineType = this.get('type');\n var dotSize = Math.max(lineWidth, 2);\n var dashSize = lineWidth * 4;\n return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n // `lineDash` gotten form the latter one is not able to erase that from the former\n // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n /**\n * Get color property or get color from option.textStyle.color\n * @param {boolean} [isEmphasis]\n * @return {string}\n */\n getTextColor: function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n },\n\n /**\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n * @return {string}\n */\n getFont: function () {\n return graphicUtil.getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n },\n getTextRect: function (text) {\n return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n /**\n * @type {string}\n */\n this.coordSysName = coordSysName;\n /**\n * @type {Array.<string>}\n */\n\n this.coordSysDims = [];\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.axisMap = createHashMap();\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.categoryAxisMap = createHashMap();\n /**\n * @type {number}\n */\n\n this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\n\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar')[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n categoryAxisMap.set(axisDim, axisModel);\n result.firstCategoryDimIndex = index;\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Compatitable with 2.0\nfunction get(opt, path) {\n path = path.split(',');\n var obj = opt;\n\n for (var i = 0; i < path.length; i++) {\n obj = obj && obj[path[i]];\n\n if (obj == null) {\n break;\n }\n }\n\n return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n path = path.split(',');\n var obj = opt;\n var key;\n\n for (var i = 0; i < path.length - 1; i++) {\n key = path[i];\n\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n if (overwrite || obj[path[i]] == null) {\n obj[path[i]] = val;\n }\n}\n\nfunction compatLayoutProperties(option) {\n each(LAYOUT_PROPERTIES, function (prop) {\n if (prop[0] in option && !(prop[1] in option)) {\n option[prop[1]] = option[prop[0]];\n }\n });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n option.series = normalizeToArray(option.series);\n each(option.series, function (seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n var seriesType = seriesOpt.type;\n\n if (seriesType === 'line') {\n if (seriesOpt.clipOverflow != null) {\n seriesOpt.clip = seriesOpt.clipOverflow;\n }\n } else if (seriesType === 'pie' || seriesType === 'gauge') {\n if (seriesOpt.clockWise != null) {\n seriesOpt.clockwise = seriesOpt.clockWise;\n }\n } else if (seriesType === 'gauge') {\n var pointerColor = get(seriesOpt, 'pointer.color');\n pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n }\n\n compatLayoutProperties(seriesOpt);\n }); // dataRange has changed to visualMap\n\n if (option.dataRange) {\n option.visualMap = option.dataRange;\n }\n\n each(COMPATITABLE_COMPONENTS, function (componentName) {\n var options = option[componentName];\n\n if (options) {\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (option) {\n compatLayoutProperties(option);\n });\n }\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n var itemStyleOpt = opt && opt.itemStyle;\n\n if (!itemStyleOpt) {\n return;\n }\n\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n var styleName = POSSIBLE_STYLES[i];\n var normalItemStyleOpt = itemStyleOpt.normal;\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].normal) {\n opt[styleName].normal = normalItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n }\n\n normalItemStyleOpt[styleName] = null;\n }\n\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].emphasis) {\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n }\n\n emphasisItemStyleOpt[styleName] = null;\n }\n }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n var normalOpt = opt[optType].normal;\n var emphasisOpt = opt[optType].emphasis;\n\n if (normalOpt) {\n // Timeline controlStyle has other properties besides normal and emphasis\n if (useExtend) {\n opt[optType].normal = opt[optType].emphasis = null;\n zrUtil.defaults(opt[optType], normalOpt);\n } else {\n opt[optType] = normalOpt;\n }\n }\n\n if (emphasisOpt) {\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[optType] = emphasisOpt;\n }\n }\n}\n\nfunction removeEC3NormalStatus(opt) {\n convertNormalEmphasis(opt, 'itemStyle');\n convertNormalEmphasis(opt, 'lineStyle');\n convertNormalEmphasis(opt, 'areaStyle');\n convertNormalEmphasis(opt, 'label');\n convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n // Check whether is not object (string\\null\\undefined ...)\n var labelOptSingle = isObject(opt) && opt[propName];\n var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n if (textStyle) {\n for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n if (textStyle.hasOwnProperty(propName)) {\n labelOptSingle[propName] = textStyle[propName];\n }\n }\n }\n}\n\nfunction compatEC3CommonStyles(opt) {\n if (opt) {\n removeEC3NormalStatus(opt);\n compatTextStyle(opt, 'label');\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n }\n}\n\nfunction processSeries(seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n compatEC2ItemStyle(seriesOpt);\n removeEC3NormalStatus(seriesOpt);\n compatTextStyle(seriesOpt, 'label'); // treemap\n\n compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt, 'edgeLabel');\n\n if (seriesOpt.emphasis) {\n compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n }\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint) {\n compatEC2ItemStyle(markPoint);\n compatEC3CommonStyles(markPoint);\n }\n\n var markLine = seriesOpt.markLine;\n\n if (markLine) {\n compatEC2ItemStyle(markLine);\n compatEC3CommonStyles(markLine);\n }\n\n var markArea = seriesOpt.markArea;\n\n if (markArea) {\n compatEC3CommonStyles(markArea);\n }\n\n var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n // then the backward compat based on option type will not be performed.\n\n if (seriesOpt.type === 'graph') {\n data = data || seriesOpt.nodes;\n var edgeData = seriesOpt.links || seriesOpt.edges;\n\n if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n for (var i = 0; i < edgeData.length; i++) {\n compatEC3CommonStyles(edgeData[i]);\n }\n }\n\n zrUtil.each(seriesOpt.categories, function (opt) {\n removeEC3NormalStatus(opt);\n });\n }\n\n if (data && !zrUtil.isTypedArray(data)) {\n for (var i = 0; i < data.length; i++) {\n compatEC3CommonStyles(data[i]);\n }\n } // mark point data\n\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint && markPoint.data) {\n var mpData = markPoint.data;\n\n for (var i = 0; i < mpData.length; i++) {\n compatEC3CommonStyles(mpData[i]);\n }\n } // mark line data\n\n\n var markLine = seriesOpt.markLine;\n\n if (markLine && markLine.data) {\n var mlData = markLine.data;\n\n for (var i = 0; i < mlData.length; i++) {\n if (zrUtil.isArray(mlData[i])) {\n compatEC3CommonStyles(mlData[i][0]);\n compatEC3CommonStyles(mlData[i][1]);\n } else {\n compatEC3CommonStyles(mlData[i]);\n }\n }\n } // Series\n\n\n if (seriesOpt.type === 'gauge') {\n compatTextStyle(seriesOpt, 'axisLabel');\n compatTextStyle(seriesOpt, 'title');\n compatTextStyle(seriesOpt, 'detail');\n } else if (seriesOpt.type === 'treemap') {\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n zrUtil.each(seriesOpt.levels, function (opt) {\n removeEC3NormalStatus(opt);\n });\n } else if (seriesOpt.type === 'tree') {\n removeEC3NormalStatus(seriesOpt.leaves);\n } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n each(toArr(option.series), function (seriesOpt) {\n isObject(seriesOpt) && processSeries(seriesOpt);\n });\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n each(axes, function (axisName) {\n each(toArr(option[axisName]), function (axisOpt) {\n if (axisOpt) {\n compatTextStyle(axisOpt, 'axisLabel');\n compatTextStyle(axisOpt.axisPointer, 'label');\n }\n });\n });\n each(toArr(option.parallel), function (parallelOpt) {\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n compatTextStyle(parallelAxisDefault, 'axisLabel');\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n });\n each(toArr(option.calendar), function (calendarOpt) {\n convertNormalEmphasis(calendarOpt, 'itemStyle');\n compatTextStyle(calendarOpt, 'dayLabel');\n compatTextStyle(calendarOpt, 'monthLabel');\n compatTextStyle(calendarOpt, 'yearLabel');\n }); // radar.name.textStyle\n\n each(toArr(option.radar), function (radarOpt) {\n compatTextStyle(radarOpt, 'name');\n });\n each(toArr(option.geo), function (geoOpt) {\n if (isObject(geoOpt)) {\n compatEC3CommonStyles(geoOpt);\n each(toArr(geoOpt.regions), function (regionObj) {\n compatEC3CommonStyles(regionObj);\n });\n }\n });\n each(toArr(option.timeline), function (timelineOpt) {\n compatEC3CommonStyles(timelineOpt);\n convertNormalEmphasis(timelineOpt, 'label');\n convertNormalEmphasis(timelineOpt, 'itemStyle');\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n var data = timelineOpt.data;\n zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n if (zrUtil.isObject(item)) {\n convertNormalEmphasis(item, 'label');\n convertNormalEmphasis(item, 'itemStyle');\n }\n });\n });\n each(toArr(option.toolbox), function (toolboxOpt) {\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\n each(toolboxOpt.feature, function (featureOpt) {\n convertNormalEmphasis(featureOpt, 'iconStyle');\n });\n });\n compatTextStyle(toObj(option.axisPointer), 'label');\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar samplers = {\n average: function (frame) {\n var sum = 0;\n var count = 0;\n\n for (var i = 0; i < frame.length; i++) {\n if (!isNaN(frame[i])) {\n sum += frame[i];\n count++;\n }\n } // Return NaN if count is 0\n\n\n return count === 0 ? NaN : sum / count;\n },\n sum: function (frame) {\n var sum = 0;\n\n for (var i = 0; i < frame.length; i++) {\n // Ignore NaN\n sum += frame[i] || 0;\n }\n\n return sum;\n },\n max: function (frame) {\n var max = -Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] > max && (max = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(max) ? max : NaN;\n },\n min: function (frame) {\n var min = Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] < min && (min = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(min) ? min : NaN;\n },\n // TODO\n // Median\n nearest: function (frame) {\n return frame[0];\n }\n};\n\nvar indexSampler = function (frame, value) {\n return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n modifyOutputEnd: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var sampling = seriesModel.get('sampling');\n var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n if (coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n var size = extent[1] - extent[0];\n var rate = Math.round(data.count() / size);\n\n if (rate > 1) {\n var sampler;\n\n if (typeof sampling === 'string') {\n sampler = samplers[sampling];\n } else if (typeof sampling === 'function') {\n sampler = sampling;\n }\n\n if (sampler) {\n // Only support sample the first dim mapped from value axis.\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n }\n }\n }\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) [Caution]: the logic is correct based on the premises:\n// data processing stage is blocked in stream.\n// See <module:echarts/stream/Scheduler#performDataProcessorTasks>\n// (2) Only register once when import repeatly.\n// Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n var stackInfoMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n if (stack) {\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n var data = seriesModel.getData();\n var stackInfo = {\n // Used for calculate axis extent automatically.\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n stackedDimension: data.getCalculationInfo('stackedDimension'),\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n data: data,\n seriesModel: seriesModel\n }; // If stacked on axis that do not support data stack.\n\n if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n return;\n }\n\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n stackInfoList.push(stackInfo);\n }\n });\n stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n each(stackInfoList, function (targetStackInfo, idxInStack) {\n var resultVal = [];\n var resultNaN = [NaN, NaN];\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n var targetData = targetStackInfo.data;\n var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n // depending on legend selection.\n\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n // should also be NaN, to draw a appropriate belt area.\n\n if (isNaN(sum)) {\n return resultNaN;\n }\n\n var byValue;\n var stackedDataRawIndex;\n\n if (isStackedByIndex) {\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n } else {\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n } // If stackOver is NaN, chart view will render point on value start.\n\n\n var stackedOver = NaN;\n\n for (var j = idxInStack - 1; j >= 0; j--) {\n var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n if (!isStackedByIndex) {\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n }\n\n if (stackedDataRawIndex >= 0) {\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n if (sum >= 0 && val > 0 || // Positive stack\n sum <= 0 && val < 0 // Negative stack\n ) {\n sum += val;\n stackedOver = val;\n break;\n }\n }\n }\n\n resultVal[0] = sum;\n resultVal[1] = stackedOver;\n return resultVal;\n });\n targetData.hostModel.setData(newData); // Update for consequent calculation\n\n targetStackInfo.data = newData;\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n type: 'interval',\n _interval: 0,\n _intervalPrecision: 2,\n setExtent: function (start, end) {\n var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n },\n unionExtent: function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n },\n\n /**\n * Get interval\n */\n getInterval: function () {\n return this._interval;\n },\n\n /**\n * Set interval\n */\n setInterval: function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.<number>}\n */\n getTicks: function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n } else {\n ticks.push(extent[0]);\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push(tick); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1]) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n } else {\n ticks.push(extent[1]);\n }\n }\n\n return ticks;\n },\n\n /**\n * @param {number} [splitNumber=5]\n * @return {Array.<Array.<number>>}\n */\n getMinorTicks: function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick - prevTick;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n },\n\n /**\n * @param {number} data\n * @param {Object} [opt]\n * @param {number|string} [opt.precision] If 'auto', use nice presision.\n * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n * @return {string}\n */\n getLabel: function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n data = roundNumber(data, precision, true);\n return formatUtil.addCommas(data);\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n *\n * @param {number} [splitNumber = 5] Desired number of ticks\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n */\n niceTicks: function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n },\n\n /**\n * Nice extent.\n * @param {Object} opt\n * @param {number} [opt.splitNumber = 5] Given approx tick number\n * @param {boolean} [opt.fixMin=false]\n * @param {boolean} [opt.fixMax=false]\n * @param {boolean} [opt.minInterval]\n * @param {boolean} [opt.maxInterval]\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n type: 'log',\n base: 10,\n $constructor: function () {\n Scale.apply(this, arguments);\n this._originalScale = new IntervalScale();\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.<number>}\n */\n getTicks: function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return powVal;\n }, this);\n },\n\n /**\n * @param {number} splitNumber\n * @return {Array.<Array.<number>>}\n */\n getMinorTicks: intervalScaleProto.getMinorTicks,\n\n /**\n * @param {number} val\n * @return {string}\n */\n getLabel: intervalScaleProto.getLabel,\n\n /**\n * @param {number} val\n * @return {number}\n */\n scale: function (val) {\n val = scaleProto.scale.call(this, val);\n return mathPow(this.base, val);\n },\n\n /**\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n },\n\n /**\n * @return {number} end\n */\n getExtent: function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n },\n\n /**\n * @param {Array.<number>} extent\n */\n unionExtent: function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n * @param {number} [approxTickNum = 10] Given approx tick number\n */\n niceTicks: function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n\n /**\n * Nice extent.\n * @override\n */\n niceExtent: function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n var originalScale = this._originalScale;\n originalScale.__fixMin = opt.fixMin;\n originalScale.__fixMax = opt.fixMax;\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n LogScale.prototype[methodName] = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleProto[methodName].call(this, val);\n };\n});\n\nLogScale.create = function () {\n return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n type: 'ordinal',\n\n /**\n * @param {module:echarts/data/OrdianlMeta|Array.<string>} ordinalMeta\n */\n init: function (ordinalMeta, extent) {\n // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: ordinalMeta\n });\n }\n\n this._ordinalMeta = ordinalMeta;\n this._extent = extent || [0, ordinalMeta.categories.length - 1];\n },\n parse: function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n },\n contain: function (rank) {\n rank = this.parse(rank);\n return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n },\n\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param {number|string} [val]\n * @return {number}\n */\n normalize: function (val) {\n return scaleProto.normalize.call(this, this.parse(val));\n },\n scale: function (val) {\n return Math.round(scaleProto.scale.call(this, val));\n },\n\n /**\n * @return {Array}\n */\n getTicks: function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push(rank);\n rank++;\n }\n\n return ticks;\n },\n\n /**\n * Get item on rank n\n * @param {number} n\n * @return {string}\n */\n getLabel: function (n) {\n if (!this.isBlank()) {\n // Note that if no data, ordinalMeta.categories is an empty array.\n return this._ordinalMeta.categories[n];\n }\n },\n\n /**\n * @return {number}\n */\n count: function () {\n return this._extent[1] - this._extent[0] + 1;\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n },\n getOrdinalMeta: function () {\n return this._ordinalMeta;\n },\n niceTicks: zrUtil.noop,\n niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.<number>}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.<number>}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.<number>} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.<number>}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n type: 'time',\n\n /**\n * @override\n */\n getLabel: function (val) {\n var stepLvl = this._stepLvl;\n var date = new Date(val);\n return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n },\n\n /**\n * @override\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n }\n },\n\n /**\n * @override\n */\n niceTicks: function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n var approxInterval = span / approxTickNum;\n\n if (minInterval != null && approxInterval < minInterval) {\n approxInterval = minInterval;\n }\n\n if (maxInterval != null && approxInterval > maxInterval) {\n approxInterval = maxInterval;\n }\n\n var scaleLevelsLen = scaleLevels.length;\n var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n if (level[0] === 'year') {\n var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n interval *= yearStep;\n }\n\n var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n scaleHelper.fixExtent(niceExtent, extent);\n this._stepLvl = level; // Interval will be used in getTicks\n\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n parse: function (val) {\n // val might be float.\n return +numberUtil.parseDate(val);\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n TimeScale.prototype[methodName] = function (val) {\n return intervalScaleProto[methodName].call(this, this.parse(val));\n };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/time/scale.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n return new TimeScale({\n useUTC: model.ecModel.get('useUTC')\n });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.<number>} extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = require(\"./task\");\n\nvar createTask = _task.createTask;\n\nvar _component = require(\"../util/component\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = require(\"../model/Global\");\n\nvar ExtensionAPI = require(\"../ExtensionAPI\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n this.ecInstance = ecInstance;\n this.api = api;\n this.unfinished; // Fix current processors in case that in some rear cases that\n // processors might be registered after echarts instance created.\n // Register processors incrementally for a echarts instance is\n // not supported by this stream architecture.\n\n var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n var visualHandlers = this._visualHandlers = visualHandlers.slice();\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n /**\n * @private\n * @type {\n * [handlerUID: string]: {\n * seriesTaskMap?: {\n * [seriesUID: string]: Task\n * },\n * overallTask?: Task\n * }\n * }\n */\n\n this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n // TODO: Only restroe needed series and components, but not all components.\n // Currently `restoreData` of all of the series and component will be called.\n // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n // and some components like coordinate system, axes, dataZoom, visualMap only\n // need their target series refresh.\n // (1) If we are implementing this feature some day, we should consider these cases:\n // if a data processor depends on a component (e.g., dataZoomProcessor depends\n // on the settings of `dataZoom`), it should be re-performed if the component\n // is modified by `setOption`.\n // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n // it should be re-performed when the result array of `getTargetSeries` changed.\n // We use `dependencies` to cover these issues.\n // (3) How to update target series when coordinate system related components modified.\n // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n // and this case all of the tasks will be set as dirty.\n ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n // depends on all of the series.\n // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n // that the overall task is set as dirty and to be performed, otherwise it probably cause\n // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n // probably cause state chaos (consider `dataZoomProcessor`).\n\n this._stageTaskMap.each(function (taskRecord) {\n var overallTask = taskRecord.overallTask;\n overallTask && overallTask.dirty();\n });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n // For overall task\n if (!task.__pipeline) {\n return;\n }\n\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n var pCtx = pipeline.context;\n var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n var step = incremental ? pipeline.step : null;\n var modDataCount = pCtx && pCtx.modDataCount;\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n return {\n step: step,\n modBy: modBy,\n modDataCount: modDataCount\n };\n};\n\nproto.getPipeline = function (pipelineId) {\n return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n var data = seriesModel.getData();\n var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n // animation frame. Note that some types of series do not provide\n // `view.incrementalPrepareRender` but support `chart.appendData`. We\n // use the term `incremental` but not `progressive` to describe the\n // case that `chart.appendData`.\n\n var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n // see `test/candlestick-large3.html`\n\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n seriesModel.pipelineContext = pipeline.context = {\n progressiveRender: progressiveRender,\n modDataCount: modDataCount,\n large: large\n };\n};\n\nproto.restorePipelines = function (ecModel) {\n var scheduler = this;\n var pipelineMap = scheduler._pipelineMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var progressive = seriesModel.getProgressive();\n var pipelineId = seriesModel.uid;\n pipelineMap.set(pipelineId, {\n id: pipelineId,\n head: null,\n tail: null,\n threshold: seriesModel.getProgressiveThreshold(),\n progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n blockIndex: -1,\n step: Math.round(progressive || 700),\n count: 0\n });\n pipe(scheduler, seriesModel, seriesModel.dataTask);\n });\n};\n\nproto.prepareStageTasks = function () {\n var stageTaskMap = this._stageTaskMap;\n var ecModel = this.ecInstance.getModel();\n var api = this.api;\n each(this._allHandlers, function (handler) {\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n var renderTask = view.renderTask;\n var context = renderTask.context;\n context.model = model;\n context.ecModel = ecModel;\n context.api = api;\n renderTask.__block = !view.incrementalPrepareRender;\n pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n // If we do not use `block` here, it should be considered when to update modes.\n performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n block: true\n });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n opt = opt || {};\n var unfinished;\n each(stageHandlers, function (stageHandler, idx) {\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n return;\n }\n\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n var overallTask = stageHandlerRecord.overallTask;\n\n if (overallTask) {\n var overallNeedDirty;\n var agentStubMap = overallTask.agentStubMap;\n agentStubMap.each(function (stub) {\n if (needSetDirty(opt, stub)) {\n stub.dirty();\n overallNeedDirty = true;\n }\n });\n overallNeedDirty && overallTask.dirty();\n updatePayload(overallTask, payload);\n var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n // then execute the overall task. And stub will call seriesModel.setData,\n // which ensures that in the overallTask seriesModel.getData() will not\n // return incorrect data.\n\n agentStubMap.each(function (stub) {\n stub.perform(performArgs);\n });\n unfinished |= overallTask.perform(performArgs);\n } else if (seriesTaskMap) {\n seriesTaskMap.each(function (task, pipelineId) {\n if (needSetDirty(opt, task)) {\n task.dirty();\n }\n\n var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n // if intending to decalare `performRawSeries` in handlers, only\n // stream-independent (specifically, data item independent) operations can be\n // performed. Because is a series is filtered, most of the tasks will not\n // be performed. A stream-dependent operation probably cause wrong biz logic.\n // Perhaps we should not provide a separate callback for this case instead\n // of providing the config `performRawSeries`. The stream-dependent operaions\n // and stream-independent operations should better not be mixed.\n\n performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n updatePayload(task, payload);\n unfinished |= task.perform(performArgs);\n });\n }\n });\n\n function needSetDirty(opt, task) {\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n }\n\n scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n // Progress to the end for dataInit and dataRestore.\n unfinished |= seriesModel.dataTask.perform();\n });\n this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n // Travel pipelines, check block.\n this._pipelineMap.each(function (pipeline) {\n var task = pipeline.tail;\n\n do {\n if (task.__block) {\n pipeline.blockIndex = task.__idxInPipeline;\n break;\n }\n\n task = task.getUpstream();\n } while (task);\n });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n // it works but it may cause other irrelevant charts blocked.\n\n if (stageHandler.createOnAllSeries) {\n ecModel.eachRawSeries(create);\n } else if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, create);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(create);\n }\n\n function create(seriesModel) {\n var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n // Reuse original task instance.\n\n var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n plan: seriesTaskPlan,\n reset: seriesTaskReset,\n count: seriesTaskCount\n }));\n task.context = {\n model: seriesModel,\n ecModel: ecModel,\n api: api,\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n plan: stageHandler.plan,\n reset: stageHandler.reset,\n scheduler: scheduler\n };\n pipe(scheduler, seriesModel, task);\n } // Clear unused series tasks.\n\n\n var pipelineMap = scheduler._pipelineMap;\n seriesTaskMap.each(function (task, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n task.dispose();\n seriesTaskMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n || createTask({\n reset: overallTaskReset\n });\n overallTask.context = {\n ecModel: ecModel,\n api: api,\n overallReset: stageHandler.overallReset,\n scheduler: scheduler\n }; // Reuse orignal stubs.\n\n var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries;\n var overallProgress = true;\n var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n // stub in each pipelines, it will set the overall task dirty when the pipeline\n // progress. Moreover, to avoid call the overall task each frame (too frequent),\n // we set the pipeline block.\n\n if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, createStub);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(createStub);\n } // Otherwise, (usually it is legancy case), the overall task will only be\n // executed when upstream dirty. Otherwise the progressive rendering of all\n // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n // dirty info from upsteam.\n else {\n overallProgress = false;\n each(ecModel.getSeries(), createStub);\n }\n\n function createStub(seriesModel) {\n var pipelineId = seriesModel.uid;\n var stub = agentStubMap.get(pipelineId);\n\n if (!stub) {\n stub = agentStubMap.set(pipelineId, createTask({\n reset: stubReset,\n onDirty: stubOnDirty\n })); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n }\n\n stub.context = {\n model: seriesModel,\n overallProgress: overallProgress,\n modifyOutputEnd: modifyOutputEnd\n };\n stub.agent = overallTask;\n stub.__block = overallProgress;\n pipe(scheduler, seriesModel, stub);\n } // Clear unused stubs.\n\n\n var pipelineMap = scheduler._pipelineMap;\n agentStubMap.each(function (stub, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n agentStubMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction overallTaskReset(context) {\n context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n this.agent.dirty();\n this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n if (context.useClearVisual) {\n context.data.clearAllVisual();\n }\n\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n return makeSeriesTaskProgress(idx);\n }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n return function (params, context) {\n var data = context.data;\n var resetDefine = context.resetDefines[resetDefineIdx];\n\n if (resetDefine && resetDefine.dataEach) {\n for (var i = params.start; i < params.end; i++) {\n resetDefine.dataEach(data, i);\n }\n } else if (resetDefine && resetDefine.progress) {\n resetDefine.progress(params, data);\n }\n };\n}\n\nfunction seriesTaskCount(context) {\n return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n var pipelineId = seriesModel.uid;\n\n var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n !pipeline.head && (pipeline.head = task);\n pipeline.tail && pipeline.tail.pipe(task);\n pipeline.tail = task;\n task.__idxInPipeline = pipeline.count++;\n task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n if (isFunction(stageHandler)) {\n stageHandler = {\n overallReset: stageHandler,\n seriesType: detectSeriseType(stageHandler)\n };\n }\n\n stageHandler.uid = getUID('stageHandler');\n visualType && (stageHandler.visualType = visualType);\n return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n seriesType = null;\n\n try {\n // Assume there is no async when calling `eachSeriesByType`.\n legacyFunc(ecModelMock, apiMock);\n } catch (e) {}\n\n return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n if (cond.mainType === 'series' && cond.subType) {\n seriesType = cond.subType;\n }\n};\n\nfunction mockMethods(target, Clz) {\n /* eslint-disable */\n for (var name in Clz.prototype) {\n // Do not use hasOwnProperty\n target[name] = noop;\n }\n /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar contrastColor = '#eee';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisTick: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisLabel: {\n textStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n type: 'dashed',\n color: '#aaa'\n }\n },\n splitArea: {\n areaStyle: {\n color: contrastColor\n }\n }\n };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n color: colorPalette,\n backgroundColor: '#333',\n tooltip: {\n axisPointer: {\n lineStyle: {\n color: contrastColor\n },\n crossStyle: {\n color: contrastColor\n },\n label: {\n color: '#000'\n }\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: contrastColor\n }\n },\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: contrastColor\n }\n }\n },\n dataZoom: {\n textStyle: {\n color: contrastColor\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n itemStyle: {\n normal: {\n color: colorPalette[1]\n }\n },\n label: {\n normal: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n controlStyle: {\n normal: {\n color: contrastColor,\n borderColor: contrastColor\n }\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n candlestick: {\n itemStyle: {\n normal: {\n color: '#FD1050',\n color0: '#0CF49B',\n borderColor: '#FD1050',\n borderColor0: '#0CF49B'\n }\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n color: colorAll,\n colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object.<subKey, componentClass>, when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.<string>} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.<string>} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"./clazz\");\n\nvar parseClassType = _clazz.parseClassType;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n var subTypeDefaulters = {};\n\n entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n componentType = parseClassType(componentType);\n subTypeDefaulters[componentType.main] = defaulter;\n };\n\n entity.determineSubType = function (componentType, option) {\n var type = option.type;\n\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n\n if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n\n return type;\n };\n\n return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n /**\n * @public\n * @param {Array.<string>} targetNameList Target Component type list.\n * Can be ['aa', 'bb', 'aa.xx']\n * @param {Array.<string>} fullNameList By which we can build dependency graph.\n * @param {Function} callback Params: componentType, dependencies.\n * @param {Object} context Scope of callback.\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var stack = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n\n while (stack.length) {\n var currComponentType = stack.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n\n zrUtil.each(targetNameSet, function () {\n throw new Error('Circle dependency may exists');\n });\n\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n\n if (graph[succComponentType].entryCount === 0) {\n stack.push(succComponentType);\n }\n } // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n\n\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n /**\n * DepndencyGraph: {Object}\n * key: conponentType,\n * value: {\n * successor: [conponentTypes...],\n * originalDeps: [conponentTypes...],\n * entryCount: {number}\n * }\n */\n\n\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n\n var thatItem = createDependencyGraphItem(graph, dependentName);\n\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n\n return graph[name];\n }\n\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n '\\'': '&#39;'\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.<Object>|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>' : '<span style=\"display:inline-block;margin-right:5px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.<number>} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n if (target === '_blank' || target === 'blank') {\n var blank = window.open();\n blank.opener = null;\n blank.location = link;\n } else {\n window.open(link, target);\n }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * <A> This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * <B> The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * <C> `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.<number>} target [x, y]\n * @param {Array.<number>|TypedArray.<number>|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.<number>} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.<number>} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.<Array.<number>>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.<Array.<number>>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.<Array.<number>>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.<number>} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.<number>} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.<string>} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.<number|string|Date>}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.<Object>|Array.<module:echarts/model/Component>} exists\n * @param {Object|Array.<Object>} newCptOptions\n * @return {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.<Object>} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.<Object>} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.<Object>} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array.<Array.<Object>, Array.<Object>>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.<number>} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.<number>|Array.<string>\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.<string>} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.<number>)} val\n * @param {Array.<number>} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.<number>} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.<number>}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.<number>} dataExtent\n * @param {Array.<number>} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.<number>} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see <https://momentjs.com/>).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/arrays/quantile.js>.\n * See the license statement at the head of this file.\n * @param {Array.<number>} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.<Object>} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.<Object>} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _text = require(\"zrender/lib/contain/text\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.<string, module:zrender/graphic/Path>}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.<number>} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../lang\");\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(dom, ecModel) {\n var ariaModel = ecModel.getModel('aria');\n\n if (!ariaModel.get('show')) {\n return;\n } else if (ariaModel.get('description')) {\n dom.setAttribute('aria-label', ariaModel.get('description'));\n return;\n }\n\n var seriesCnt = 0;\n ecModel.eachSeries(function (seriesModel, idx) {\n ++seriesCnt;\n }, this);\n var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n var ariaLabel;\n\n if (seriesCnt < 1) {\n // No series, no aria label\n return;\n } else {\n var title = getTitle();\n\n if (title) {\n ariaLabel = replace(getConfig('general.withTitle'), {\n title: title\n });\n } else {\n ariaLabel = getConfig('general.withoutTitle');\n }\n\n var seriesLabels = [];\n var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n ariaLabel += replace(getConfig(prefix), {\n seriesCount: seriesCnt\n });\n ecModel.eachSeries(function (seriesModel, idx) {\n if (idx < displaySeriesCnt) {\n var seriesLabel;\n var seriesName = seriesModel.get('name');\n var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n seriesLabel = replace(seriesLabel, {\n seriesId: seriesModel.seriesIndex,\n seriesName: seriesModel.get('name'),\n seriesType: getSeriesTypeName(seriesModel.subType)\n });\n var data = seriesModel.getData();\n window.data = data;\n\n if (data.count() > maxDataCnt) {\n // Show part of data\n seriesLabel += replace(getConfig('data.partialData'), {\n displayCnt: maxDataCnt\n });\n } else {\n seriesLabel += getConfig('data.allData');\n }\n\n var dataLabels = [];\n\n for (var i = 0; i < data.count(); i++) {\n if (i < maxDataCnt) {\n var name = data.getName(i);\n var value = retrieveRawValue(data, i);\n dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n name: name,\n value: value\n }));\n }\n }\n\n seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n seriesLabels.push(seriesLabel);\n }\n });\n ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n dom.setAttribute('aria-label', ariaLabel);\n }\n\n function replace(str, keyValues) {\n if (typeof str !== 'string') {\n return str;\n }\n\n var result = str;\n zrUtil.each(keyValues, function (value, key) {\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n });\n return result;\n }\n\n function getConfig(path) {\n var userConfig = ariaModel.get(path);\n\n if (userConfig == null) {\n var pathArr = path.split('.');\n var result = lang.aria;\n\n for (var i = 0; i < pathArr.length; ++i) {\n result = result[pathArr[i]];\n }\n\n return result;\n } else {\n return userConfig;\n }\n }\n\n function getTitle() {\n var title = ecModel.getModel('title').option;\n\n if (title && title.length) {\n title = title[0];\n }\n\n return title && title.text;\n }\n\n function getSeriesTypeName(type) {\n return lang.series.typeNames[type] || '自定义图';\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Gradient = require(\"zrender/lib/graphic/Gradient\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var symbolRotate = seriesModel.get('symbolRotate');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasSymbolRotateCallback = isFunction(symbolRotate);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect,\n symbolRotate: symbolRotate\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolRotate != null) {\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\n };\n }\n };\n}\n\nmodule.exports = _default;","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '&#123;'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. '&#x41;'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. '&#x41;' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","// Generated by CoffeeScript 2.3.0\n// # node-http-status\n\n// **Reference:** \n\n// - https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\n// - https://tools.ietf.org/html/rfc2324#section-2.3.2\n\n// ## Classes\n\n// The first digit of the status-code defines the class of response. The last two digits do not have any categorization role. There are five values for the first digit:\nvar classes;\n\nclasses = {\n // 1xx - The 1xx (Informational) class of status code indicates an interim response for communicating connection status or request progress prior to completing the requested action and sending a final response.\n '1xx': 'Informational',\n '1xx_NAME': 'INFORMATIONAL',\n '1xx_MESSAGE': 'Indicates an interim response for communicating connection status or request progress prior to completing the requested action and sending a final response.',\n INFORMATIONAL: '1xx',\n // 2xx - The 2xx (Successful) class of status code indicates that the client's request was successfully received, understood, and accepted.\n '2xx': 'Successful',\n '2xx_NAME': 'SUCCESSFUL',\n '2xx_MESSAGE': 'Indicates that the client\\'s request was successfully received, understood, and accepted.',\n SUCCESSFUL: '2xx',\n // 3xx - The 3xx (Redirection) class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request.\n '3xx': 'Redirection',\n '3xx_NAME': 'REDIRECTION',\n '3xx_MESSAGE': 'Indicates that further action needs to be taken by the user agent in order to fulfill the request.',\n REDIRECTION: '3xx',\n // 4xx - The 4xx (Client Error) class of status code indicates that the client seems to have erred.\n '4xx': 'Client Error',\n '4xx_NAME': 'CLIENT_ERROR',\n '4xx_MESSAGE': 'Indicates that the client seems to have erred.',\n CLIENT_ERROR: '4xx',\n // 5xx - The 5xx (Server Error) class of status code indicates that the server is aware that it has erred or is incapable of performing the requested method.\n '5xx': 'Server Error',\n '5xx_NAME': 'SERVER_ERROR',\n '5xx_MESSAGE': 'Indicates that the server is aware that it has erred or is incapable of performing the requested method.',\n SERVER_ERROR: '5xx'\n};\n\nmodule.exports = {\n classes: classes,\n // ## Informational 1xx\n\n // Indicates an interim response for communicating connection status or request progress prior to completing the requested action and sending a final response.\n\n // 100 - The server has received the request headers and the client should proceed to send the request body.\n 100: 'Continue',\n '100_NAME': 'CONTINUE',\n '100_MESSAGE': 'The server has received the request headers and the client should proceed to send the request body.',\n '100_CLASS': classes.INFORMATIONAL,\n CONTINUE: 100,\n // 101 - The requester has asked the server to switch protocols and the server has agreed to do so.\n 101: 'Switching Protocols',\n '101_NAME': 'SWITCHING_PROTOCOLS',\n '101_MESSAGE': 'The requester has asked the server to switch protocols and the server has agreed to do so.',\n '101_CLASS': classes.INFORMATIONAL,\n SWITCHING_PROTOCOLS: 101,\n // 102 Processing (WebDAV; RFC 2518) - A WebDAV request may contain many sub-requests involving file operations, requiring a long time to complete the request. This code indicates that the server has received and is processing the request, but no response is available yet.[7] This prevents the client from timing out and assuming the request was lost.\n 102: 'Processing',\n '102_NAME': 'PROCESSING',\n '102_MESSAGE': 'A WebDAV request may contain many sub-requests involving file operations, requiring a long time to complete the request. This code indicates that the server has received and is processing the request, but no response is available yet.[7] This prevents the client from timing out and assuming the request was lost.',\n '102_CLASS': classes.INFORMATIONAL,\n PROCESSING: 102,\n // 103 Early Hints (RFC 8297) - Used to return some response headers before final HTTP message.\n 103: 'Early Hints',\n '103_NAME': 'EARLY_HINTS',\n '103_MESSAGE': 'Used to return some response headers before final HTTP message.',\n '103_CLASS': classes.INFORMATIONAL,\n EARLY_HINTS: 103,\n // ## Successful 2xx\n\n // Indicates that the client's request was successfully received, understood, and accepted.\n\n // 200 - Standard response for successful HTTP requests.\n 200: 'OK',\n '200_NAME': 'OK',\n '200_MESSAGE': 'Standard response for successful HTTP requests.',\n '200_CLASS': classes.SUCCESSFUL,\n OK: 200,\n // 201 - The request has been fulfilled, resulting in the creation of a new resource.\n 201: 'Created',\n '201_NAME': 'CREATED',\n '201_MESSAGE': 'The request has been fulfilled, resulting in the creation of a new resource.',\n '201_CLASS': classes.SUCCESSFUL,\n CREATED: 201,\n // 202 - The request has been accepted for processing, but the processing has not been completed.\n 202: 'Accepted',\n '202_NAME': 'ACCEPTED',\n '202_MESSAGE': 'The request has been accepted for processing, but the processing has not been completed.',\n '202_CLASS': classes.SUCCESSFUL,\n ACCEPTED: 202,\n // 203 (since HTTP/1.1) - The server is a transforming proxy (e.g. a Web accelerator) that received a 200 OK from its origin, but is returning a modified version of the origin's response.\n 203: 'Non-Authoritative Information',\n '203_NAME': 'NON_AUTHORITATIVE_INFORMATION',\n '203_MESSAGE': 'The server is a transforming proxy (e.g. a Web accelerator) that received a 200 OK from its origin, but is returning a modified version of the origin\\'s response.',\n '203_CLASS': classes.SUCCESSFUL,\n NON_AUTHORITATIVE_INFORMATION: 203,\n // 204 - The server successfully processed the request and is not returning any content.\n 204: 'No Content',\n '204_NAME': 'NO_CONTENT',\n '204_MESSAGE': 'The server successfully processed the request and is not returning any content.',\n '204_CLASS': classes.SUCCESSFUL,\n NO_CONTENT: 204,\n // 205 - The server successfully processed the request, but is not returning any content. Unlike a 204 response, this response requires that the requester reset the document view.\n 205: 'Reset Content',\n '205_NAME': 'RESET_CONTENT',\n '205_MESSAGE': 'The server successfully processed the request, but is not returning any content. Unlike a 204 response, this response requires that the requester reset the document view.',\n '205_CLASS': classes.SUCCESSFUL,\n RESET_CONTENT: 205,\n // 206 (RFC 7233) - The server is delivering only part of the resource (byte serving) due to a range header sent by the client.\n 206: 'Partial Content',\n '206_NAME': 'PARTIAL_CONTENT',\n '206_MESSAGE': 'The server is delivering only part of the resource (byte serving) due to a range header sent by the client.',\n '206_CLASS': classes.SUCCESSFUL,\n PARTIAL_CONTENT: 206,\n // 207 (WebDAV; RFC 4918) - The message body that follows is by default an XML message and can contain a number of separate response codes, depending on how many sub-requests were made.\n 207: 'Multi Status',\n '207_NAME': 'MULTI_STATUS',\n '207_MESSAGE': 'The message body that follows is by default an XML message and can contain a number of separate response codes, depending on how many sub-requests were made.',\n '207_CLASS': classes.SUCCESSFUL,\n MULTI_STATUS: 207,\n // 208 (WebDAV; RFC 5842) - The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response, and are not being included again.\n 208: 'Already Reported',\n '208_NAME': 'ALREADY_REPORTED',\n '208_MESSAGE': 'The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response, and are not being included again.',\n '208_CLASS': classes.SUCCESSFUL,\n ALREADY_REPORTED: 208,\n // 226 (RFC 3229) - The server has fulfilled a request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.\n 226: 'IM Used',\n '226_NAME': 'IM_USED',\n '226_MESSAGE': 'The server has fulfilled a request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.',\n '226_CLASS': classes.SUCCESSFUL,\n IM_USED: 226,\n // ## Redirection 3xx\n\n // Indicates that further action needs to be taken by the user agent in order to fulfill the request.\n\n // 300 - Indicates multiple options for the resource from which the client may choose.\n 300: 'Multiple Choices',\n '300_NAME': 'MULTIPLE_CHOICES',\n '300_MESSAGE': 'Indicates multiple options for the resource from which the client may choose.',\n '300_CLASS': classes.REDIRECTION,\n MULTIPLE_CHOICES: 300,\n // 301 - This and all future requests should be directed to the given URI.\n 301: 'Moved Permanently',\n '301_NAME': 'MOVED_PERMANENTLY',\n '301_MESSAGE': 'This and all future requests should be directed to the given URI.',\n '301_CLASS': classes.REDIRECTION,\n MOVED_PERMANENTLY: 301,\n // 302 - This is an example of industry practice contradicting the standard. The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect (the original describing phrase was \"Moved Temporarily\"), but popular browsers implemented 302 with the functionality of a 303 See Other. Therefore, HTTP/1.1 added status codes 303 and 307 to distinguish between the two behaviours.\n 302: 'Found',\n '302_NAME': 'FOUND',\n '302_MESSAGE': 'This is an example of industry practice contradicting the standard. The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect (the original describing phrase was \"Moved Temporarily\"), but popular browsers implemented 302 with the functionality of a 303 See Other. Therefore, HTTP/1.1 added status codes 303 and 307 to distinguish between the two behaviours.',\n '302_CLASS': classes.REDIRECTION,\n FOUND: 302,\n // 303 (since HTTP/1.1) - The response to the request can be found under another URI using the GET method.\n 303: 'See Other',\n '303_NAME': 'SEE_OTHER',\n '303_MESSAGE': 'The response to the request can be found under another URI using the GET method.',\n '303_CLASS': classes.REDIRECTION,\n SEE_OTHER: 303,\n // 304 (RFC 7232) - Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.\n 304: 'Not Modified',\n '304_NAME': 'NOT_MODIFIED',\n '304_MESSAGE': 'Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.',\n '304_CLASS': classes.REDIRECTION,\n NOT_MODIFIED: 304,\n // 305 (since HTTP/1.1) - The requested resource is available only through a proxy, the address for which is provided in the response.\n 305: 'Use Proxy',\n '305_NAME': 'USE_PROXY',\n '305_MESSAGE': 'The requested resource is available only through a proxy, the address for which is provided in the response.',\n '305_CLASS': classes.REDIRECTION,\n USE_PROXY: 305,\n // 306 - No longer used. Originally meant \"Subsequent requests should use the specified proxy.\n 306: 'Switch Proxy',\n '306_NAME': 'SWITCH_PROXY',\n '306_MESSAGE': 'No longer used. Originally meant \"Subsequent requests should use the specified proxy.',\n '306_CLASS': classes.REDIRECTION,\n SWITCH_PROXY: 306,\n // 307 (since HTTP/1.1) - In this case, the request should be repeated with another URI; however, future requests should still use the original URI.\n 307: 'Temporary Redirect',\n '307_NAME': 'TEMPORARY_REDIRECT',\n '307_MESSAGE': 'In this case, the request should be repeated with another URI; however, future requests should still use the original URI.',\n '307_CLASS': classes.REDIRECTION,\n TEMPORARY_REDIRECT: 307,\n // 308 (RFC 7538) - The request and all future requests should be repeated using another URI.\n 308: 'Permanent Redirect',\n '308_NAME': 'PERMANENT_REDIRECT',\n '308_MESSAGE': 'The request and all future requests should be repeated using another URI.',\n '308_CLASS': classes.REDIRECTION,\n PERMANENT_REDIRECT: 308,\n // ## Client Error 4xx\n\n // Indicates that the client seems to have erred.\n\n // 400 - The server cannot or will not process the request due to an apparent client error.\n 400: 'Bad Request',\n '400_NAME': 'BAD_REQUEST',\n '400_MESSAGE': 'The server cannot or will not process the request due to an apparent client error.',\n '400_CLASS': classes.CLIENT_ERROR,\n BAD_REQUEST: 400,\n // 401 (RFC 7235) - Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided.\n 401: 'Unauthorized',\n '401_NAME': 'UNAUTHORIZED',\n '401_MESSAGE': 'Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided.',\n '401_CLASS': classes.CLIENT_ERROR,\n UNAUTHORIZED: 401,\n // 402 - Reserved for future use. The original intention was that this code might be used as part of some form of digital cash or micropayment scheme, as proposed for example by GNU Taler, but that has not yet happened, and this code is not usually used.\n 402: 'Payment Required',\n '402_NAME': 'PAYMENT_REQUIRED',\n '402_MESSAGE': 'Reserved for future use. The original intention was that this code might be used as part of some form of digital cash or micropayment scheme, as proposed for example by GNU Taler, but that has not yet happened, and this code is not usually used.',\n '402_CLASS': classes.CLIENT_ERROR,\n PAYMENT_REQUIRED: 402,\n // 403 - The request was valid, but the server is refusing action.\n 403: 'Forbidden',\n '403_NAME': 'FORBIDDEN',\n '403_MESSAGE': 'The request was valid, but the server is refusing action.',\n '403_CLASS': classes.CLIENT_ERROR,\n FORBIDDEN: 403,\n // 404 - The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.\n 404: 'Not Found',\n '404_NAME': 'NOT_FOUND',\n '404_MESSAGE': 'The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.',\n '404_CLASS': classes.CLIENT_ERROR,\n NOT_FOUND: 404,\n // 405 - A request method is not supported for the requested resource.\n 405: 'Method Not Allowed',\n '405_NAME': 'METHOD_NOT_ALLOWED',\n '405_MESSAGE': 'A request method is not supported for the requested resource.',\n '405_CLASS': classes.CLIENT_ERROR,\n METHOD_NOT_ALLOWED: 405,\n // 406 - The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.\n 406: 'Not Acceptable',\n '406_NAME': 'NOT_ACCEPTABLE',\n '406_MESSAGE': 'The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.',\n '406_CLASS': classes.CLIENT_ERROR,\n NOT_ACCEPTABLE: 406,\n // 407 (RFC 7235) - The client must first authenticate itself with the proxy.\n 407: 'Proxy Authentication Required',\n '407_NAME': 'PROXY_AUTHENTICATION_REQUIRED',\n '407_MESSAGE': 'The client must first authenticate itself with the proxy.',\n '407_CLASS': classes.CLIENT_ERROR,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n // 408 - The server timed out waiting for the request.\n 408: 'Request Time-out',\n '408_NAME': 'REQUEST_TIMEOUT',\n '408_MESSAGE': 'The server timed out waiting for the request.',\n '408_CLASS': classes.CLIENT_ERROR,\n REQUEST_TIMEOUT: 408,\n // 409 - Indicates that the request could not be processed because of conflict in the request, such as an edit conflict between multiple simultaneous updates.\n 409: 'Conflict',\n '409_NAME': 'CONFLICT',\n '409_MESSAGE': 'Indicates that the request could not be processed because of conflict in the request, such as an edit conflict between multiple simultaneous updates.',\n '409_CLASS': classes.CLIENT_ERROR,\n CONFLICT: 409,\n // 410 - Indicates that the resource requested is no longer available and will not be available again.\n 410: 'Gone',\n '410_NAME': 'GONE',\n '410_MESSAGE': 'Indicates that the resource requested is no longer available and will not be available again.',\n '410_CLASS': classes.CLIENT_ERROR,\n GONE: 410,\n // 411 - The request did not specify the length of its content, which is required by the requested resource.\n 411: 'Length Required',\n '411_NAME': 'LENGTH_REQUIRED',\n '411_MESSAGE': 'The request did not specify the length of its content, which is required by the requested resource.',\n '411_CLASS': classes.CLIENT_ERROR,\n LENGTH_REQUIRED: 411,\n // 412 (RFC 7232) - The server does not meet one of the preconditions that the requester put on the request.\n 412: 'Precondition Failed',\n '412_NAME': 'PRECONDITION_FAILED',\n '412_MESSAGE': 'The server does not meet one of the preconditions that the requester put on the request.',\n '412_CLASS': classes.CLIENT_ERROR,\n PRECONDITION_FAILED: 412,\n // 413 (RFC 7231) - The request is larger than the server is willing or able to process. Previously called \"Request Entity Too Large\".\n 413: 'Request Entity Too Large',\n '413_NAME': 'REQUEST_ENTITY_TOO_LARGE',\n '413_MESSAGE': 'The request is larger than the server is willing or able to process. Previously called \"Request Entity Too Large\".',\n '413_CLASS': classes.CLIENT_ERROR,\n REQUEST_ENTITY_TOO_LARGE: 413,\n // 414 (RFC 7231) - The URI provided was too long for the server to process.\n 414: 'Request-URI Too Large',\n '414_NAME': 'REQUEST_URI_TOO_LONG',\n '414_MESSAGE': 'The URI provided was too long for the server to process.',\n '414_CLASS': classes.CLIENT_ERROR,\n REQUEST_URI_TOO_LONG: 414,\n // 415 - The request entity has a media type which the server or resource does not support.\n 415: 'Unsupported Media Type',\n '415_NAME': 'UNSUPPORTED_MEDIA_TYPE',\n '415_MESSAGE': 'The request entity has a media type which the server or resource does not support.',\n '415_CLASS': classes.CLIENT_ERROR,\n UNSUPPORTED_MEDIA_TYPE: 415,\n // 416 (RFC 7233) - The client has asked for a portion of the file (byte serving), but the server cannot supply that portion.\n 416: 'Requested Range not Satisfiable',\n '416_NAME': 'REQUESTED_RANGE_NOT_SATISFIABLE',\n '416_MESSAGE': 'The client has asked for a portion of the file (byte serving), but the server cannot supply that portion.',\n '416_CLASS': classes.CLIENT_ERROR,\n REQUESTED_RANGE_NOT_SATISFIABLE: 416,\n // 417 - The server cannot meet the requirements of the Expect request-header field.\n 417: 'Expectation Failed',\n '417_NAME': 'EXPECTATION_FAILED',\n '417_MESSAGE': 'The server cannot meet the requirements of the Expect request-header field.',\n '417_CLASS': classes.CLIENT_ERROR,\n EXPECTATION_FAILED: 417,\n // 418 (RFC 2324, RFC 7168) - Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout. This code was defined in 1998 as one of the traditional IETF April Fools' jokes, in RFC 2324, Hyper Text Coffee Pot Control Protocol, and is not expected to be implemented by actual HTTP servers. The RFC specifies this code should be returned by teapots requested to brew coffee. This HTTP status is used as an Easter egg in some websites, including Google.com.\n 418: 'I\\'m a teapot',\n '418_NAME': 'IM_A_TEAPOT',\n '418_MESSAGE': 'Any attempt to brew coffee with a teapot should result in the error code \"418 I\\'m a teapot\". The resulting entity body MAY be short and stout.',\n '418_CLASS': classes.CLIENT_ERROR,\n IM_A_TEAPOT: 418,\n // 421 (RFC 7540) - The request was directed at a server that is not able to produce a response.\n 421: 'Misdirected Request',\n '421_NAME': 'MISDIRECTED_REQUEST',\n '421_MESSAGE': 'The request was directed at a server that is not able to produce a response.',\n '421_CLASS': classes.CLIENT_ERROR,\n MISDIRECTED_REQUEST: 421,\n // 422 (WebDAV; RFC 4918) - The request was well-formed but was unable to be followed due to semantic errors.\n 422: 'Unprocessable Entity',\n '422_NAME': 'UNPROCESSABLE_ENTITY',\n '422_MESSAGE': 'The request was well-formed but was unable to be followed due to semantic errors.',\n '422_CLASS': classes.CLIENT_ERROR,\n UNPROCESSABLE_ENTITY: 422,\n // 423 (WebDAV; RFC 4918) - The resource that is being accessed is locked.\n 423: 'Locked',\n '423_NAME': 'LOCKED',\n '423_MESSAGE': 'The resource that is being accessed is locked.',\n '423_CLASS': classes.CLIENT_ERROR,\n LOCKED: 423,\n // 424 (WebDAV; RFC 4918) - The request failed because it depended on another request and that request failed.\n 424: 'Failed Dependency',\n '424_NAME': 'FAILED_DEPENDENCY',\n '424_MESSAGE': 'The request failed because it depended on another request and that request failed.',\n '424_CLASS': classes.CLIENT_ERROR,\n FAILED_DEPENDENCY: 424,\n // 426 - The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.\n 426: 'Upgrade Required',\n '426_NAME': 'UPGRADE_REQUIRED',\n '426_MESSAGE': 'The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.',\n '426_CLASS': classes.CLIENT_ERROR,\n UPGRADE_REQUIRED: 426,\n // 428 (RFC 6585) - The origin server requires the request to be conditional.\n 428: 'Precondition Required', // RFC 6585\n '428_NAME': 'PRECONDITION_REQUIRED',\n '428_MESSAGE': 'The origin server requires the request to be conditional.',\n '428_CLASS': classes.CLIENT_ERROR,\n PRECONDITION_REQUIRED: 428,\n // 429 (RFC 6585) - The user has sent too many requests in a given amount of time.\n 429: 'Too Many Requests',\n '429_NAME': 'TOO_MANY_REQUESTS',\n '429_MESSAGE': 'The user has sent too many requests in a given amount of time.',\n '429_CLASS': classes.CLIENT_ERROR,\n TOO_MANY_REQUESTS: 429,\n // 431 (RFC 6585) - The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large.\n 431: 'Request Header Fields Too Large', // RFC 6585\n '431_NAME': 'REQUEST_HEADER_FIELDS_TOO_LARGE',\n '431_MESSAGE': 'The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large.',\n '431_CLASS': classes.CLIENT_ERROR,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n // 451 (RFC 7725) - A server operator has received a legal demand to deny access to a resource or to a set of resources that includes the requested resource.\n 451: 'Unavailable For Legal Reasons',\n '451_NAME': 'UNAVAILABLE_FOR_LEGAL_REASONS',\n '451_MESSAGE': 'A server operator has received a legal demand to deny access to a resource or to a set of resources that includes the requested resource.',\n '451_CLASS': classes.CLIENT_ERROR,\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\n // ## Server Error 5xx\n\n // Indicates that the server is aware that it has erred or is incapable of performing the requested method.\n\n // 500 - A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.\n 500: 'Internal Server Error',\n '500_NAME': 'INTERNAL_SERVER_ERROR',\n '500_MESSAGE': 'A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.',\n '500_CLASS': classes.SERVER_ERROR,\n INTERNAL_SERVER_ERROR: 500,\n // 501 - The server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability.\n 501: 'Not Implemented',\n '501_NAME': 'NOT_IMPLEMENTED',\n '501_MESSAGE': 'The server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability.',\n '501_CLASS': classes.SERVER_ERROR,\n NOT_IMPLEMENTED: 501,\n // 502 - The server was acting as a gateway or proxy and received an invalid response from the upstream server.\n 502: 'Bad Gateway',\n '502_NAME': 'BAD_GATEWAY',\n '502_MESSAGE': 'The server was acting as a gateway or proxy and received an invalid response from the upstream server.',\n '502_CLASS': classes.SERVER_ERROR,\n BAD_GATEWAY: 502,\n // 503 - The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.\n 503: 'Service Unavailable',\n '503_NAME': 'SERVICE_UNAVAILABLE',\n '503_MESSAGE': 'The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.',\n '503_CLASS': classes.SERVER_ERROR,\n SERVICE_UNAVAILABLE: 503,\n // 504 - The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\n 504: 'Gateway Time-out',\n '504_NAME': 'GATEWAY_TIMEOUT',\n '504_MESSAGE': 'The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.',\n '504_CLASS': classes.SERVER_ERROR,\n GATEWAY_TIMEOUT: 504,\n // 505 - The server does not support the HTTP protocol version used in the request.\n 505: 'HTTP Version not Supported',\n '505_NAME': 'HTTP_VERSION_NOT_SUPPORTED',\n '505_MESSAGE': 'The server does not support the HTTP protocol version used in the request.',\n '505_CLASS': classes.SERVER_ERROR,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n // 506 (RFC 2295) - Transparent content negotiation for the request results in a circular reference.\n 506: 'Variant Also Negotiates',\n '506_NAME': 'VARIANT_ALSO_NEGOTIATES',\n '506_MESSAGE': 'Transparent content negotiation for the request results in a circular reference.',\n '506_CLASS': classes.SERVER_ERROR,\n VARIANT_ALSO_NEGOTIATES: 506,\n // 507 (WebDAV; RFC 4918) - The server is unable to store the representation needed to complete the request.\n 507: 'Insufficient Storage',\n '507_NAME': 'INSUFFICIENT_STORAGE',\n '507_MESSAGE': 'The server is unable to store the representation needed to complete the request.',\n '507_CLASS': classes.SERVER_ERROR,\n INSUFFICIENT_STORAGE: 507,\n // 508 (WebDAV; RFC 5842) - The server detected an infinite loop while processing the request.\n 508: 'Loop Detected',\n '508_NAME': 'LOOP_DETECTED',\n '508_MESSAGE': 'The server detected an infinite loop while processing the request.',\n '508_CLASS': classes.SERVER_ERROR,\n LOOP_DETECTED: 508,\n // 510 (RFC 2774) - Further extensions to the request are required for the server to fulfil it.\n 510: 'Not Extended',\n '510_NAME': 'NOT_EXTENDED',\n '510_MESSAGE': 'Further extensions to the request are required for the server to fulfil it.',\n '510_CLASS': classes.SERVER_ERROR,\n NOT_EXTENDED: 510,\n // 511 (RFC 6585) - The client needs to authenticate to gain network access. Intended for use by intercepting proxies used to control access to the network.\n 511: 'Network Authentication Required',\n '511_NAME': 'NETWORK_AUTHENTICATION_REQUIRED',\n '511_MESSAGE': 'The client needs to authenticate to gain network access. Intended for use by intercepting proxies used to control access to the network.',\n '511_CLASS': classes.SERVER_ERROR,\n NETWORK_AUTHENTICATION_REQUIRED: 511,\n // ## Extra code\n\n // Extra HTTP code implemented by vendors and other specifications.\n extra: {\n // ### Unofficial codes\n\n // The following codes are not specified by any standard.\n unofficial: {\n // 103 - Used in the resumable requests proposal to resume aborted PUT or POST requests.\n 103: 'Checkpoint',\n '103_NAME': 'CHECKPOINT',\n '103_MESSAGE': 'Used in the resumable requests proposal to resume aborted PUT or POST requests.',\n '103_CLASS': classes.INFORMATIONAL,\n CHECKPOINT: 103,\n // 419 Page Expired (Laravel Framework) - Used by the Laravel Framework when a CSRF Token is missing or expired.\n 419: 'Page Expired',\n '419_NAME': 'PAGE_EXPIRED',\n '419_MESSAGE': 'Used by the Laravel Framework when a CSRF Token is missing or expired.',\n '419_CLASS': classes.CLIENT_ERROR,\n PAGE_EXPIRED: 419,\n // 218 This is fine (Apache Web Server) - Used as a catch-all error condition for allowing response bodies to flow through Apache when ProxyErrorOverride is enabled. When ProxyErrorOverride is enabled in Apache, response bodies that contain a status code of 4xx or 5xx are automatically discarded by Apache in favor of a generic response or a custom response specified by the ErrorDocument directive.\n 218: 'This is fine',\n '218_NAME': 'THIS_IS_FINE',\n '218_MESSAGE': 'Used as a catch-all error condition for allowing response bodies to flow through Apache when ProxyErrorOverride is enabled. When ProxyErrorOverride is enabled in Apache, response bodies that contain a status code of 4xx or 5xx are automatically discarded by Apache in favor of a generic response or a custom response specified by the ErrorDocument directive.',\n '218_CLASS': classes.SUCCESSFUL,\n THIS_IS_FINE: 218,\n // 420 Enhance Your Calm (Twitter) - Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests response code instead.\n 420: 'Enhance Your Calm',\n '420_NAME': 'ENHANCE_YOUR_CALM',\n '420_MESSAGE': 'Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests response code instead.',\n '420_CLASS': classes.CLIENT_ERROR,\n ENHANCE_YOUR_CALM: 420,\n // 450 Blocked by Windows Parental (Microsoft) - The Microsoft extension code indicated when Windows Parental Controls are turned on and are blocking access to the requested webpage.\n 450: 'Blocked by Windows Parental Controls',\n '450_NAME': 'BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS',\n '450_MESSAGE': 'The Microsoft extension code indicated when Windows Parental Controls are turned on and are blocking access to the requested webpage.',\n '450_CLASS': classes.CLIENT_ERROR,\n BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS: 450,\n // 498 Invalid Token (Esri) - Returned by ArcGIS for Server. Code 498 indicates an expired or otherwise invalid token.\n 498: 'Invalid Token',\n '498_NAME': 'INVALID_TOKEN',\n '498_MESSAGE': 'Returned by ArcGIS for Server. Code 498 indicates an expired or otherwise invalid token.',\n '498_CLASS': classes.CLIENT_ERROR,\n INVALID_TOKEN: 498,\n // 499 Token Required (Esri) - Returned by ArcGIS for Server. Code 499 indicates that a token is required but was not submitted.\n 499: 'Token Required',\n '499_NAME': 'TOKEN_REQUIRED',\n '499_MESSAGE': 'Returned by ArcGIS for Server. Code 499 indicates that a token is required but was not submitted.',\n '499_CLASS': classes.CLIENT_ERROR,\n TOKEN_REQUIRED: 499,\n // 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel) - The server has exceeded the bandwidth specified by the server administrator.\n 509: 'Bandwidth Limit Exceeded',\n '509_NAME': 'BANDWIDTH_LIMIT_EXCEEDED',\n '509_MESSAGE': 'The server has exceeded the bandwidth specified by the server administrator.',\n '509_CLASS': classes.SERVER_ERROR,\n BANDWIDTH_LIMIT_EXCEEDED: 509,\n // 530 Site is frozen - Used by the Pantheon web platform to indicate a site that has been frozen due to inactivity.\n 530: 'Site is frozen',\n '530_NAME': 'SITE_IS_FROZEN',\n '530_MESSAGE': 'Used by the Pantheon web platform to indicate a site that has been frozen due to inactivity.',\n '530_CLASS': classes.SERVER_ERROR,\n SITE_IS_FROZEN: 530,\n // 598 (Informal convention) Network read timeout error - Used by some HTTP proxies to signal a network read timeout behind the proxy to a client in front of the proxy.\n 598: 'Network read timeout error',\n '598_NAME': 'NETWORK_READ_TIMEOUT_ERROR',\n '598_MESSAGE': 'Used by some HTTP proxies to signal a network read timeout behind the proxy to a client in front of the proxy.',\n '598_CLASS': classes.SERVER_ERROR,\n NETWORK_READ_TIMEOUT_ERROR: 598\n },\n // ### Internet Information Services (IIS)\n\n // Microsoft's Internet Information Services (IIS) web server expands the 4xx error space to signal errors with the client's request.\n iis: {\n // 440 - The client's session has expired and must log in again.\n 440: 'Login Time-out',\n '440_NAME': 'LOGIN_TIME_OUT',\n '440_MESSAGE': 'The client\\'s session has expired and must log in again.',\n '440_CLASS': classes.CLIENT_ERROR,\n LOGIN_TIME_OUT: 440,\n // 449 - The server cannot honour the request because the user has not provided the required information.\n 449: 'Retry With',\n '449_NAME': 'RETRY_WITH',\n '449_MESSAGE': 'The server cannot honour the request because the user has not provided the required information.',\n '449_CLASS': classes.CLIENT_ERROR,\n RETRY_WITH: 449,\n // 451 - Used in Exchange ActiveSync when either a more efficient server is available or the server cannot access the users' mailbox.\n 451: 'Redirect',\n '451_NAME': 'REDIRECT',\n '451_MESSAGE': 'Used in Exchange ActiveSync when either a more efficient server is available or the server cannot access the users\\' mailbox.',\n '451_CLASS': classes.CLIENT_ERROR,\n REDIRECT: 451\n },\n // ### NGINX\n\n // The NGINX web server software expands the 4xx error space to signal issues with the client's request.\n nginx: {\n // 444 - Used internally to instruct the server to return no information to the client and close the connection immediately.\n 444: 'No Response',\n '444_NAME': 'NO_RESPONSE',\n '444_MESSAGE': 'Used internally to instruct the server to return no information to the client and close the connection immediately.',\n '444_CLASS': classes.CLIENT_ERROR,\n NO_RESPONSE: 444,\n // 494 - Client sent too large request or too long header line.\n 494: 'Request header too large',\n '494_NAME': 'REQUEST_HEADER_TOO_LARGE',\n '494_MESSAGE': 'Client sent too large request or too long header line.',\n '494_CLASS': classes.CLIENT_ERROR,\n REQUEST_HEADER_TOO_LARGE: 494,\n // 495 - An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.\n 495: 'SSL Certificate Error',\n '495_NAME': 'SSL_CERTIFICATE_ERROR',\n '495_MESSAGE': 'An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.',\n '495_CLASS': classes.CLIENT_ERROR,\n SSL_CERTIFICATE_ERROR: 495,\n // 496 - An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.\n 496: 'SSL Certificate Required',\n '496_NAME': 'SSL_CERTIFICATE_REQUIRED',\n '496_MESSAGE': 'An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.',\n '496_CLASS': classes.CLIENT_ERROR,\n SSL_CERTIFICATE_REQUIRED: 496,\n // 497 - An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.\n 497: 'HTTP Request Sent to HTTPS Port',\n '497_NAME': 'HTTP_REQUEST_SENT_TO_HTTPS_PORT',\n '497_MESSAGE': 'An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.',\n '497_CLASS': classes.CLIENT_ERROR,\n HTTP_REQUEST_SENT_TO_HTTPS_PORT: 497,\n // 499 - Used when the client has closed the request before the server could send a response.\n 499: 'Client Closed Request',\n '499_NAME': 'CLIENT_CLOSED_REQUEST',\n '499_MESSAGE': 'Used when the client has closed the request before the server could send a response.',\n '499_CLASS': classes.CLIENT_ERROR,\n CLIENT_CLOSED_REQUEST: 499\n },\n // ### Cloudflare\n\n // Cloudflare's reverse proxy service expands the 5xx series of errors space to signal issues with the origin server.\n cloudflare: {\n // 520 - The 520 error is used as a \"catch-all response for when the origin server returns something unexpected\", listing connection resets, large headers, and empty or invalid responses as common triggers.\n 520: 'Unknown Error',\n '520_NAME': 'UNKNOWN_ERROR',\n '520_MESSAGE': 'The 520 error is used as a \"catch-all response for when the origin server returns something unexpected\", listing connection resets, large headers, and empty or invalid responses as common triggers.',\n '520_CLASS': classes.SERVER_ERROR,\n UNKNOWN_ERROR: 520,\n // 521 - The origin server has refused the connection from Cloudflare.\n 521: 'Web Server Is Down',\n '521_NAME': 'WEB_SERVER_IS_DOWN',\n '521_MESSAGE': 'The origin server has refused the connection from Cloudflare.',\n '521_CLASS': classes.SERVER_ERROR,\n WEB_SERVER_IS_DOWN: 521,\n // 522 - Cloudflare could not negotiate a TCP handshake with the origin server.\n 522: 'Connection Timed Out',\n '522_NAME': 'CONNECTION_TIMED_OUT',\n '522_MESSAGE': 'Cloudflare could not negotiate a TCP handshake with the origin server.',\n '522_CLASS': classes.SERVER_ERROR,\n CONNECTION_TIMED_OUT: 522,\n // 523 - Cloudflare could not reach the origin server.\n 523: 'Origin Is Unreachable',\n '523_NAME': 'ORIGIN_IS_UNREACHABLE',\n '523_MESSAGE': 'Cloudflare could not reach the origin server.',\n '523_CLASS': classes.SERVER_ERROR,\n ORIGIN_IS_UNREACHABLE: 523,\n // 524 - Cloudflare was able to complete a TCP connection to the origin server, but did not receive a timely HTTP response.\n 524: 'A Timeout Occurred',\n '524_NAME': 'A_TIMEOUT_OCCURRED',\n '524_MESSAGE': 'Cloudflare was able to complete a TCP connection to the origin server, but did not receive a timely HTTP response.',\n '524_CLASS': classes.SERVER_ERROR,\n A_TIMEOUT_OCCURRED: 524,\n // 525 - Cloudflare could not negotiate a SSL/TLS handshake with the origin server.\n 525: 'SSL Handshake Failed',\n '525_NAME': 'SSL_HANDSHAKE_FAILED',\n '525_MESSAGE': 'Cloudflare could not negotiate a SSL/TLS handshake with the origin server.',\n '525_CLASS': classes.SERVER_ERROR,\n SSL_HANDSHAKE_FAILED: 525,\n // 526 - Cloudflare could not validate the SSL/TLS certificate that the origin server presented.\n 526: 'Invalid SSL Certificate',\n '526_NAME': 'INVALID_SSL_CERTIFICATE',\n '526_MESSAGE': 'Cloudflare could not validate the SSL/TLS certificate that the origin server presented.',\n '526_CLASS': classes.SERVER_ERROR,\n INVALID_SSL_CERTIFICATE: 526,\n // 527 - Error 527 indicates that the request timed out or failed after the WAN connection had been established.\n 527: 'Railgun Error',\n '527_NAME': 'RAILGUN_ERROR',\n '527_MESSAGE': 'Error 527 indicates that the request timed out or failed after the WAN connection had been established.',\n '527_CLASS': classes.SERVER_ERROR,\n RAILGUN_ERROR: 527\n }\n }\n};\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","/*!\n * jsoneditor.js\n *\n * @brief\n * JSONEditor is a web-based tool to view, edit, format, and validate JSON.\n * It has various modes such as a tree editor, a code editor, and a plain text\n * editor.\n *\n * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+\n *\n * @license\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy\n * of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n *\n * Copyright (c) 2011-2020 Jos de Jong, http://jsoneditoronline.org\n *\n * @author Jos de Jong, <wjosdejong@gmail.com>\n * @version 9.1.5\n * @date 2020-12-14\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONEditor\"] = factory();\n\telse\n\t\troot[\"JSONEditor\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 23);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trySimpleJsonRepair\", function() { return trySimpleJsonRepair; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeUnicodeChars\", function() { return escapeUnicodeChars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return validate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return getType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUrl\", function() { return isUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWindow\", function() { return getWindow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAbsoluteLeft\", function() { return getAbsoluteLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAbsoluteTop\", function() { return getAbsoluteTop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClassName\", function() { return addClassName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeAllClassNames\", function() { return removeAllClassNames; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeClassName\", function() { return removeClassName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stripFormatting\", function() { return stripFormatting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setEndOfContentEditable\", function() { return setEndOfContentEditable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectContentEditable\", function() { return selectContentEditable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSelection\", function() { return getSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSelection\", function() { return setSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSelectionOffset\", function() { return getSelectionOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSelectionOffset\", function() { return setSelectionOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInnerText\", function() { return getInnerText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasParentNode\", function() { return hasParentNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInternetExplorerVersion\", function() { return getInternetExplorerVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFirefox\", function() { return isFirefox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEventListener\", function() { return addEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeEventListener\", function() { return removeEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChildOf\", function() { return isChildOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringifyPath\", function() { return stringifyPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"improveSchemaError\", function() { return improveSchemaError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidValidationError\", function() { return isValidValidationError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insideRect\", function() { return insideRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"textDiff\", function() { return textDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInputSelection\", function() { return getInputSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getIndexForPosition\", function() { return getIndexForPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPositionForPath\", function() { return getPositionForPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compileJSONPointer\", function() { return compileJSONPointer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorCSS\", function() { return getColorCSS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidColor\", function() { return isValidColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeFieldTooltip\", function() { return makeFieldTooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return get; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findUniqueName\", function() { return findUniqueName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getChildPaths\", function() { return getChildPaths; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sort\", function() { return sort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortObjectKeys\", function() { return sortObjectKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseString\", function() { return parseString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimestamp\", function() { return isTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatSize\", function() { return formatSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"limitCharacters\", function() { return limitCharacters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return contains; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidationErrorChanged\", function() { return isValidationErrorChanged; });\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_polyfills__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);\n/* harmony import */ var javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var simple_json_repair__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);\n/* harmony import */ var simple_json_repair__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(simple_json_repair__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);\n/* harmony import */ var _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var json_source_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);\n/* harmony import */ var json_source_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(json_source_map__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1);\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\nvar MAX_ITEMS_FIELDS_COLLECTION = 10000;\nvar YEAR_2000 = 946684800000;\n/**\n * Parse JSON using the parser built-in in the browser.\n * On exception, the jsonString is validated and a detailed error is thrown.\n * @param {String} jsonString\n * @return {JSON} json\n */\n\nfunction parse(jsonString) {\n try {\n return JSON.parse(jsonString);\n } catch (err) {\n // try to throw a more detailed error message using validate\n validate(jsonString); // rethrow the original error\n\n throw err;\n }\n}\n/**\n * Try to fix the JSON string. If not successful, return the original string\n * @param {string} jsonString\n */\n\nfunction trySimpleJsonRepair(jsonString) {\n try {\n return simple_json_repair__WEBPACK_IMPORTED_MODULE_2___default()(jsonString);\n } catch (err) {\n // repair was not successful, return original text\n return jsonString;\n }\n}\n/**\n * Escape unicode characters.\n * For example input '\\u2661' (length 1) will output '\\\\u2661' (length 5).\n * @param {string} text\n * @return {string}\n */\n\nfunction escapeUnicodeChars( // see https://www.wikiwand.com/en/UTF-16\ntext) {\n return (// note: we leave surrogate pairs as two individual chars,\n // as JSON doesn't interpret them as a single unicode char.\n text.replace(/[\\u007F-\\uFFFF]/g, function (c) {\n return \"\\\\u\" + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);\n })\n );\n}\n/**\n * Validate a string containing a JSON object\n * This method uses JSONLint to validate the String. If JSONLint is not\n * available, the built-in JSON parser of the browser is used.\n * @param {String} jsonString String with an (invalid) JSON object\n * @throws Error\n */\n\nfunction validate(jsonString) {\n if (typeof _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3___default.a !== 'undefined') {\n _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3___default.a.parse(jsonString);\n } else {\n JSON.parse(jsonString);\n }\n}\n/**\n * Extend object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\n\nfunction extend(a, b) {\n for (var prop in b) {\n if (hasOwnProperty(b, prop)) {\n a[prop] = b[prop];\n }\n }\n\n return a;\n}\n/**\n * Remove all properties from object a\n * @param {Object} a\n * @return {Object} a\n */\n\nfunction clear(a) {\n for (var prop in a) {\n if (hasOwnProperty(a, prop)) {\n delete a[prop];\n }\n }\n\n return a;\n}\n/**\n * Get the type of an object\n * @param {*} object\n * @return {String} type\n */\n\nfunction getType(object) {\n if (object === null) {\n return 'null';\n }\n\n if (object === undefined) {\n return 'undefined';\n }\n\n if (object instanceof Number || typeof object === 'number') {\n return 'number';\n }\n\n if (object instanceof String || typeof object === 'string') {\n return 'string';\n }\n\n if (object instanceof Boolean || typeof object === 'boolean') {\n return 'boolean';\n }\n\n if (object instanceof RegExp) {\n return 'regexp';\n }\n\n if (isArray(object)) {\n return 'array';\n }\n\n return 'object';\n}\n/**\n * Test whether a text contains a url (matches when a string starts\n * with 'http://*' or 'https://*' and has no whitespace characters)\n * @param {String} text\n */\n\nvar isUrlRegex = /^https?:\\/\\/\\S+$/;\nfunction isUrl(text) {\n return (typeof text === 'string' || text instanceof String) && isUrlRegex.test(text);\n}\n/**\n * Tes whether given object is an Array\n * @param {*} obj\n * @returns {boolean} returns true when obj is an array\n */\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n/**\n * Gets a DOM element's Window. This is normally just the global `window`\n * variable, but if we opened a child window, it may be different.\n * @param {HTMLElement} element\n * @return {Window}\n */\n\nfunction getWindow(element) {\n return element.ownerDocument.defaultView;\n}\n/**\n * Retrieve the absolute left value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {Number} left The absolute left position of this element\n * in the browser page.\n */\n\nfunction getAbsoluteLeft(elem) {\n var rect = elem.getBoundingClientRect();\n return rect.left + window.pageXOffset || document.scrollLeft || 0;\n}\n/**\n * Retrieve the absolute top value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {Number} top The absolute top position of this element\n * in the browser page.\n */\n\nfunction getAbsoluteTop(elem) {\n var rect = elem.getBoundingClientRect();\n return rect.top + window.pageYOffset || document.scrollTop || 0;\n}\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\n\nfunction addClassName(elem, className) {\n var classes = elem.className.split(' ');\n\n if (classes.indexOf(className) === -1) {\n classes.push(className); // add the class to the array\n\n elem.className = classes.join(' ');\n }\n}\n/**\n * remove all classes from the given elements style\n * @param {Element} elem\n */\n\nfunction removeAllClassNames(elem) {\n elem.className = '';\n}\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\n\nfunction removeClassName(elem, className) {\n var classes = elem.className.split(' ');\n var index = classes.indexOf(className);\n\n if (index !== -1) {\n classes.splice(index, 1); // remove the class from the array\n\n elem.className = classes.join(' ');\n }\n}\n/**\n * Strip the formatting from the contents of a div\n * the formatting from the div itself is not stripped, only from its childs.\n * @param {Element} divElement\n */\n\nfunction stripFormatting(divElement) {\n var childs = divElement.childNodes;\n\n for (var i = 0, iMax = childs.length; i < iMax; i++) {\n var child = childs[i]; // remove the style\n\n if (child.style) {\n // TODO: test if child.attributes does contain style\n child.removeAttribute('style');\n } // remove all attributes\n\n\n var attributes = child.attributes;\n\n if (attributes) {\n for (var j = attributes.length - 1; j >= 0; j--) {\n var attribute = attributes[j];\n\n if (attribute.specified === true) {\n child.removeAttribute(attribute.name);\n }\n }\n } // recursively strip childs\n\n\n stripFormatting(child);\n }\n}\n/**\n * Set focus to the end of an editable div\n * code from Nico Burns\n * http://stackoverflow.com/users/140293/nico-burns\n * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity\n * @param {Element} contentEditableElement A content editable div\n */\n\nfunction setEndOfContentEditable(contentEditableElement) {\n var range, selection;\n\n if (document.createRange) {\n range = document.createRange(); // Create a range (a range is a like the selection but invisible)\n\n range.selectNodeContents(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n selection = window.getSelection(); // get the selection object (allows you to change selection)\n\n selection.removeAllRanges(); // remove any selections already made\n\n selection.addRange(range); // make the range you have just created the visible selection\n }\n}\n/**\n * Select all text of a content editable div.\n * http://stackoverflow.com/a/3806004/1262753\n * @param {Element} contentEditableElement A content editable div\n */\n\nfunction selectContentEditable(contentEditableElement) {\n if (!contentEditableElement || contentEditableElement.nodeName !== 'DIV') {\n return;\n }\n\n var sel, range;\n\n if (window.getSelection && document.createRange) {\n range = document.createRange();\n range.selectNodeContents(contentEditableElement);\n sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n/**\n * Get text selection\n * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\n * @return {Range | TextRange | null} range\n */\n\nfunction getSelection() {\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n }\n\n return null;\n}\n/**\n * Set text selection\n * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\n * @param {Range | TextRange | null} range\n */\n\nfunction setSelection(range) {\n if (range) {\n if (window.getSelection) {\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n}\n/**\n * Get selected text range\n * @return {Object} params object containing parameters:\n * {Number} startOffset\n * {Number} endOffset\n * {Element} container HTML element holding the\n * selected text element\n * Returns null if no text selection is found\n */\n\nfunction getSelectionOffset() {\n var range = getSelection();\n\n if (range && 'startOffset' in range && 'endOffset' in range && range.startContainer && range.startContainer === range.endContainer) {\n return {\n startOffset: range.startOffset,\n endOffset: range.endOffset,\n container: range.startContainer.parentNode\n };\n }\n\n return null;\n}\n/**\n * Set selected text range in given element\n * @param {Object} params An object containing:\n * {Element} container\n * {Number} startOffset\n * {Number} endOffset\n */\n\nfunction setSelectionOffset(params) {\n if (document.createRange && window.getSelection) {\n var selection = window.getSelection();\n\n if (selection) {\n var range = document.createRange();\n\n if (!params.container.firstChild) {\n params.container.appendChild(document.createTextNode(''));\n } // TODO: do not suppose that the first child of the container is a textnode,\n // but recursively find the textnodes\n\n\n range.setStart(params.container.firstChild, params.startOffset);\n range.setEnd(params.container.firstChild, params.endOffset);\n setSelection(range);\n }\n }\n}\n/**\n * Get the inner text of an HTML element (for example a div element)\n * @param {Element} element\n * @param {Object} [buffer]\n * @return {String} innerText\n */\n\nfunction getInnerText(element, buffer) {\n var first = buffer === undefined;\n\n if (first) {\n buffer = {\n _text: '',\n flush: function flush() {\n var text = this._text;\n this._text = '';\n return text;\n },\n set: function set(text) {\n this._text = text;\n }\n };\n } // text node\n\n\n if (element.nodeValue) {\n // remove return characters and the whitespace surrounding return characters\n var trimmedValue = element.nodeValue.replace(/\\s*\\n\\s*/g, '');\n\n if (trimmedValue !== '') {\n return buffer.flush() + trimmedValue;\n } else {\n // ignore empty text\n return '';\n }\n } // divs or other HTML elements\n\n\n if (element.hasChildNodes()) {\n var childNodes = element.childNodes;\n var innerText = '';\n\n for (var i = 0, iMax = childNodes.length; i < iMax; i++) {\n var child = childNodes[i];\n\n if (child.nodeName === 'DIV' || child.nodeName === 'P') {\n var prevChild = childNodes[i - 1];\n var prevName = prevChild ? prevChild.nodeName : undefined;\n\n if (prevName && prevName !== 'DIV' && prevName !== 'P' && prevName !== 'BR') {\n if (innerText !== '') {\n innerText += '\\n';\n }\n\n buffer.flush();\n }\n\n innerText += getInnerText(child, buffer);\n buffer.set('\\n');\n } else if (child.nodeName === 'BR') {\n innerText += buffer.flush();\n buffer.set('\\n');\n } else {\n innerText += getInnerText(child, buffer);\n }\n }\n\n return innerText;\n } // br or unknown\n\n\n return '';\n}\n/**\n * Test whether an element has the provided parent node somewhere up the node tree.\n * @param {Element} elem\n * @param {Element} parent\n * @return {boolean}\n */\n\nfunction hasParentNode(elem, parent) {\n var e = elem ? elem.parentNode : undefined;\n\n while (e) {\n if (e === parent) {\n return true;\n }\n\n e = e.parentNode;\n }\n\n return false;\n}\n/**\n * Returns the version of Internet Explorer or a -1\n * (indicating the use of another browser).\n * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx\n * @return {Number} Internet Explorer version, or -1 in case of an other browser\n */\n\nfunction getInternetExplorerVersion() {\n if (_ieVersion === -1) {\n var rv = -1; // Return value assumes failure.\n\n if (typeof navigator !== 'undefined' && navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent;\n var re = /MSIE ([0-9]+[.0-9]+)/;\n\n if (re.exec(ua) != null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n _ieVersion = rv;\n }\n\n return _ieVersion;\n}\n/**\n * cached internet explorer version\n * @type {Number}\n * @private\n */\n\nvar _ieVersion = -1;\n/**\n * Test whether the current browser is Firefox\n * @returns {boolean} isFirefox\n */\n\n\nfunction isFirefox() {\n return typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Firefox') !== -1;\n}\n/**\n * Add an event listener. Works for all browsers\n * @param {Element} element An html element\n * @param {string} action The action, for example \"click\",\n * without the prefix \"on\"\n * @param {function} listener The callback function to be executed\n * @param {boolean} [useCapture] false by default\n * @return {function} the created event listener\n */\n\nfunction addEventListener(element, action, listener, useCapture) {\n if (element.addEventListener) {\n if (useCapture === undefined) {\n useCapture = false;\n }\n\n if (action === 'mousewheel' && isFirefox()) {\n action = 'DOMMouseScroll'; // For Firefox\n }\n\n element.addEventListener(action, listener, useCapture);\n return listener;\n } else if (element.attachEvent) {\n // Old IE browsers\n var f = function f() {\n return listener.call(element, window.event);\n };\n\n element.attachEvent('on' + action, f);\n return f;\n }\n}\n/**\n * Remove an event listener from an element\n * @param {Element} element An html dom element\n * @param {string} action The name of the event, for example \"mousedown\"\n * @param {function} listener The listener function\n * @param {boolean} [useCapture] false by default\n */\n\nfunction removeEventListener(element, action, listener, useCapture) {\n if (element.removeEventListener) {\n if (useCapture === undefined) {\n useCapture = false;\n }\n\n if (action === 'mousewheel' && isFirefox()) {\n action = 'DOMMouseScroll'; // For Firefox\n }\n\n element.removeEventListener(action, listener, useCapture);\n } else if (element.detachEvent) {\n // Old IE browsers\n element.detachEvent('on' + action, listener);\n }\n}\n/**\n * Test if an element is a child of a parent element.\n * @param {Element} elem\n * @param {Element} parent\n * @return {boolean} returns true if elem is a child of the parent\n */\n\nfunction isChildOf(elem, parent) {\n var e = elem.parentNode;\n\n while (e) {\n if (e === parent) {\n return true;\n }\n\n e = e.parentNode;\n }\n\n return false;\n}\n/**\n * Parse a JSON path like '.items[3].name' into an array\n * @param {string} jsonPath\n * @return {Array}\n */\n\nfunction parsePath(jsonPath) {\n var path = [];\n var i = 0;\n\n function parseProperty() {\n var prop = '';\n\n while (jsonPath[i] !== undefined && /[\\w$]/.test(jsonPath[i])) {\n prop += jsonPath[i];\n i++;\n }\n\n if (prop === '') {\n throw new Error('Invalid JSON path: property name expected at index ' + i);\n }\n\n return prop;\n }\n\n function parseIndex(end) {\n var name = '';\n\n while (jsonPath[i] !== undefined && jsonPath[i] !== end) {\n name += jsonPath[i];\n i++;\n }\n\n if (jsonPath[i] !== end) {\n throw new Error('Invalid JSON path: unexpected end, character ' + end + ' expected');\n }\n\n return name;\n }\n\n while (jsonPath[i] !== undefined) {\n if (jsonPath[i] === '.') {\n i++;\n path.push(parseProperty());\n } else if (jsonPath[i] === '[') {\n i++;\n\n if (jsonPath[i] === '\\'' || jsonPath[i] === '\"') {\n var end = jsonPath[i];\n i++;\n path.push(parseIndex(end));\n\n if (jsonPath[i] !== end) {\n throw new Error('Invalid JSON path: closing quote \\' expected at index ' + i);\n }\n\n i++;\n } else {\n var index = parseIndex(']').trim();\n\n if (index.length === 0) {\n throw new Error('Invalid JSON path: array value expected at index ' + i);\n } // Coerce numeric indices to numbers, but ignore star\n\n\n index = index === '*' ? index : JSON.parse(index);\n path.push(index);\n }\n\n if (jsonPath[i] !== ']') {\n throw new Error('Invalid JSON path: closing bracket ] expected at index ' + i);\n }\n\n i++;\n } else {\n throw new Error('Invalid JSON path: unexpected character \"' + jsonPath[i] + '\" at index ' + i);\n }\n }\n\n return path;\n}\n/**\n * Stringify an array with a path in a JSON path like '.items[3].name'\n * @param {Array.<string | number>} path\n * @returns {string}\n */\n\nfunction stringifyPath(path) {\n return path.map(function (p) {\n if (typeof p === 'number') {\n return '[' + p + ']';\n } else if (typeof p === 'string' && p.match(/^[A-Za-z0-9_$]+$/)) {\n return '.' + p;\n } else {\n return '[\"' + p + '\"]';\n }\n }).join('');\n}\n/**\n * Improve the error message of a JSON schema error\n * @param {Object} error\n * @return {Object} The error\n */\n\nfunction improveSchemaError(error) {\n if (error.keyword === 'enum' && Array.isArray(error.schema)) {\n var enums = error.schema;\n\n if (enums) {\n enums = enums.map(function (value) {\n return JSON.stringify(value);\n });\n\n if (enums.length > 5) {\n var more = ['(' + (enums.length - 5) + ' more...)'];\n enums = enums.slice(0, 5);\n enums.push(more);\n }\n\n error.message = 'should be equal to one of: ' + enums.join(', ');\n }\n }\n\n if (error.keyword === 'additionalProperties') {\n error.message = 'should NOT have additional property: ' + error.params.additionalProperty;\n }\n\n return error;\n}\n/**\n * Test whether something is a Promise\n * @param {*} object\n * @returns {boolean} Returns true when object is a promise, false otherwise\n */\n\nfunction isPromise(object) {\n return object && typeof object.then === 'function' && typeof object[\"catch\"] === 'function';\n}\n/**\n * Test whether a custom validation error has the correct structure\n * @param {*} validationError The error to be checked.\n * @returns {boolean} Returns true if the structure is ok, false otherwise\n */\n\nfunction isValidValidationError(validationError) {\n return _typeof(validationError) === 'object' && Array.isArray(validationError.path) && typeof validationError.message === 'string';\n}\n/**\n * Test whether the child rect fits completely inside the parent rect.\n * @param {ClientRect} parent\n * @param {ClientRect} child\n * @param {number} margin\n */\n\nfunction insideRect(parent, child, margin) {\n var _margin = margin !== undefined ? margin : 0;\n\n return child.left - _margin >= parent.left && child.right + _margin <= parent.right && child.top - _margin >= parent.top && child.bottom + _margin <= parent.bottom;\n}\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n *\n * Source: https://davidwalsh.name/javascript-debounce-function\n *\n * @param {function} func\n * @param {number} wait Number in milliseconds\n * @param {boolean} [immediate=false] If `immediate` is passed, trigger the\n * function on the leading edge, instead\n * of the trailing.\n * @return {function} Return the debounced function\n */\n\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n/**\n * Determines the difference between two texts.\n * Can only detect one removed or inserted block of characters.\n * @param {string} oldText\n * @param {string} newText\n * @return {{start: number, end: number}} Returns the start and end\n * of the changed part in newText.\n */\n\nfunction textDiff(oldText, newText) {\n var len = newText.length;\n var start = 0;\n var oldEnd = oldText.length;\n var newEnd = newText.length;\n\n while (newText.charAt(start) === oldText.charAt(start) && start < len) {\n start++;\n }\n\n while (newText.charAt(newEnd - 1) === oldText.charAt(oldEnd - 1) && newEnd > start && oldEnd > 0) {\n newEnd--;\n oldEnd--;\n }\n\n return {\n start: start,\n end: newEnd\n };\n}\n/**\n * Return an object with the selection range or cursor position (if both have the same value)\n * Support also old browsers (IE8-)\n * Source: http://ourcodeworld.com/articles/read/282/how-to-get-the-current-cursor-position-and-selection-within-a-text-input-or-textarea-in-javascript\n * @param {DOMElement} el A dom element of a textarea or input text.\n * @return {Object} reference Object with 2 properties (start and end) with the identifier of the location of the cursor and selected text.\n **/\n\nfunction getInputSelection(el) {\n var startIndex = 0;\n var endIndex = 0;\n var normalizedValue;\n var range;\n var textInputRange;\n var len;\n var endRange;\n\n if (typeof el.selectionStart === 'number' && typeof el.selectionEnd === 'number') {\n startIndex = el.selectionStart;\n endIndex = el.selectionEnd;\n } else {\n range = document.selection.createRange();\n\n if (range && range.parentElement() === el) {\n len = el.value.length;\n normalizedValue = el.value.replace(/\\r\\n/g, '\\n'); // Create a working TextRange that lives only in the input\n\n textInputRange = el.createTextRange();\n textInputRange.moveToBookmark(range.getBookmark()); // Check if the startIndex and endIndex of the selection are at the very end\n // of the input, since moveStart/moveEnd doesn't return what we want\n // in those cases\n\n endRange = el.createTextRange();\n endRange.collapse(false);\n\n if (textInputRange.compareEndPoints('StartToEnd', endRange) > -1) {\n startIndex = endIndex = len;\n } else {\n startIndex = -textInputRange.moveStart('character', -len);\n startIndex += normalizedValue.slice(0, startIndex).split('\\n').length - 1;\n\n if (textInputRange.compareEndPoints('EndToEnd', endRange) > -1) {\n endIndex = len;\n } else {\n endIndex = -textInputRange.moveEnd('character', -len);\n endIndex += normalizedValue.slice(0, endIndex).split('\\n').length - 1;\n }\n }\n }\n }\n\n return {\n startIndex: startIndex,\n endIndex: endIndex,\n start: _positionForIndex(startIndex),\n end: _positionForIndex(endIndex)\n };\n /**\n * Returns textarea row and column position for certain index\n * @param {Number} index text index\n * @returns {{row: Number, column: Number}}\n */\n\n function _positionForIndex(index) {\n var textTillIndex = el.value.substring(0, index);\n var row = (textTillIndex.match(/\\n/g) || []).length + 1;\n var col = textTillIndex.length - textTillIndex.lastIndexOf('\\n');\n return {\n row: row,\n column: col\n };\n }\n}\n/**\n * Returns the index for certain position in text element\n * @param {DOMElement} el A dom element of a textarea or input text.\n * @param {Number} row row value, > 0, if exceeds rows number - last row will be returned\n * @param {Number} column column value, > 0, if exceeds column length - end of column will be returned\n * @returns {Number} index of position in text, -1 if not found\n */\n\nfunction getIndexForPosition(el, row, column) {\n var text = el.value || '';\n\n if (row > 0 && column > 0) {\n var rows = text.split('\\n', row);\n row = Math.min(rows.length, row);\n column = Math.min(rows[row - 1].length, column - 1);\n var columnCount = row === 1 ? column : column + 1; // count new line on multiple rows\n\n return rows.slice(0, row - 1).join('\\n').length + columnCount;\n }\n\n return -1;\n}\n/**\n * Returns location of json paths in certain json string\n * @param {String} text json string\n * @param {Array<String>} paths array of json paths\n * @returns {Array<{path: String, line: Number, row: Number}>}\n */\n\nfunction getPositionForPath(text, paths) {\n var result = [];\n var jsmap;\n\n if (!paths || !paths.length) {\n return result;\n }\n\n try {\n jsmap = json_source_map__WEBPACK_IMPORTED_MODULE_4___default.a.parse(text);\n } catch (err) {\n return result;\n }\n\n paths.forEach(function (path) {\n var pathArr = parsePath(path);\n var pointerName = compileJSONPointer(pathArr);\n var pointer = jsmap.pointers[pointerName];\n\n if (pointer) {\n result.push({\n path: path,\n line: pointer.key ? pointer.key.line : pointer.value ? pointer.value.line : 0,\n column: pointer.key ? pointer.key.column : pointer.value ? pointer.value.column : 0\n });\n }\n });\n return result;\n}\n/**\n * Compile a JSON Pointer\n * WARNING: this is an incomplete implementation\n * @param {Array.<string | number>} path\n * @return {string}\n */\n\nfunction compileJSONPointer(path) {\n return path.map(function (p) {\n return '/' + String(p).replace(/~/g, '~0').replace(/\\//g, '~1');\n }).join('');\n}\n/**\n * Get the applied color given a color name or code\n * Source: https://stackoverflow.com/questions/6386090/validating-css-color-names/33184805\n * @param {string} color\n * @returns {string | null} returns the color if the input is a valid\n * color, and returns null otherwise. Example output:\n * 'rgba(255,0,0,0.7)' or 'rgb(255,0,0)'\n */\n\nfunction getColorCSS(color) {\n var ele = document.createElement('div');\n ele.style.color = color;\n return ele.style.color.split(/\\s+/).join('').toLowerCase() || null;\n}\n/**\n * Test if a string contains a valid color name or code.\n * @param {string} color\n * @returns {boolean} returns true if a valid color, false otherwise\n */\n\nfunction isValidColor(color) {\n return !!getColorCSS(color);\n}\n/**\n * Make a tooltip for a field based on the field's schema.\n * @param {object} schema JSON schema\n * @param {string} [locale] Locale code (for example, zh-CN)\n * @returns {string} Field tooltip, may be empty string if all relevant schema properties are missing\n */\n\nfunction makeFieldTooltip(schema, locale) {\n if (!schema) {\n return '';\n }\n\n var tooltip = '';\n\n if (schema.title) {\n tooltip += schema.title;\n }\n\n if (schema.description) {\n if (tooltip.length > 0) {\n tooltip += '\\n';\n }\n\n tooltip += schema.description;\n }\n\n if (schema[\"default\"]) {\n if (tooltip.length > 0) {\n tooltip += '\\n\\n';\n }\n\n tooltip += Object(_i18n__WEBPACK_IMPORTED_MODULE_5__[/* translate */ \"c\"])('default', undefined, locale) + '\\n';\n tooltip += JSON.stringify(schema[\"default\"], null, 2);\n }\n\n if (Array.isArray(schema.examples) && schema.examples.length > 0) {\n if (tooltip.length > 0) {\n tooltip += '\\n\\n';\n }\n\n tooltip += Object(_i18n__WEBPACK_IMPORTED_MODULE_5__[/* translate */ \"c\"])('examples', undefined, locale) + '\\n';\n schema.examples.forEach(function (example, index) {\n tooltip += JSON.stringify(example, null, 2);\n\n if (index !== schema.examples.length - 1) {\n tooltip += '\\n';\n }\n });\n }\n\n return tooltip;\n}\n/**\n * Get a nested property from an object.\n * Returns undefined when the property does not exist.\n * @param {Object} object\n * @param {string[]} path\n * @return {*}\n */\n\nfunction get(object, path) {\n var value = object;\n\n for (var i = 0; i < path.length && value !== undefined && value !== null; i++) {\n value = value[path[i]];\n }\n\n return value;\n}\n/**\n * Find a unique name. Suffix the name with ' (copy)', '(copy 2)', etc\n * until a unique name is found\n * @param {string} name\n * @param {Array} existingPropNames Array with existing prop names\n */\n\nfunction findUniqueName(name, existingPropNames) {\n var strippedName = name.replace(/ \\(copy( \\d+)?\\)$/, '');\n var validName = strippedName;\n var i = 1;\n\n while (existingPropNames.indexOf(validName) !== -1) {\n var copy = 'copy' + (i > 1 ? ' ' + i : '');\n validName = strippedName + ' (' + copy + ')';\n i++;\n }\n\n return validName;\n}\n/**\n * Get the child paths of an array\n * @param {JSON} json\n * @param {boolean} [includeObjects=false] If true, object and array paths are returned as well\n * @return {string[]}\n */\n\nfunction getChildPaths(json, includeObjects) {\n var pathsMap = {};\n\n function getObjectChildPaths(json, pathsMap, rootPath, includeObjects) {\n var isValue = !Array.isArray(json) && !isObject(json);\n\n if (isValue || includeObjects) {\n pathsMap[rootPath || ''] = true;\n }\n\n if (isObject(json)) {\n Object.keys(json).forEach(function (field) {\n getObjectChildPaths(json[field], pathsMap, rootPath + '.' + field, includeObjects);\n });\n }\n }\n\n if (Array.isArray(json)) {\n var max = Math.min(json.length, MAX_ITEMS_FIELDS_COLLECTION);\n\n for (var i = 0; i < max; i++) {\n var item = json[i];\n getObjectChildPaths(item, pathsMap, '', includeObjects);\n }\n } else {\n pathsMap[''] = true;\n }\n\n return Object.keys(pathsMap).sort();\n}\n/**\n * Sort object keys using natural sort\n * @param {Array} array\n * @param {String} [path] JSON pointer\n * @param {'asc' | 'desc'} [direction]\n */\n\nfunction sort(array, path, direction) {\n var parsedPath = path && path !== '.' ? parsePath(path) : [];\n var sign = direction === 'desc' ? -1 : 1;\n var sortedArray = array.slice();\n sortedArray.sort(function (a, b) {\n var aValue = get(a, parsedPath);\n var bValue = get(b, parsedPath);\n return sign * (aValue > bValue ? 1 : aValue < bValue ? -1 : 0);\n });\n return sortedArray;\n}\n/**\n * Sort object keys using natural sort\n * @param {Object} object\n * @param {'asc' | 'desc'} [direction]\n */\n\nfunction sortObjectKeys(object, direction) {\n var sign = direction === 'desc' ? -1 : 1;\n var sortedFields = Object.keys(object).sort(function (a, b) {\n return sign * javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default()(a, b);\n });\n var sortedObject = {};\n sortedFields.forEach(function (field) {\n sortedObject[field] = object[field];\n });\n return sortedObject;\n}\n/**\n * Cast contents of a string to the correct type.\n * This can be a string, a number, a boolean, etc\n * @param {String} str\n * @return {*} castedStr\n * @private\n */\n\nfunction parseString(str) {\n if (str === '') {\n return '';\n }\n\n var lower = str.toLowerCase();\n\n if (lower === 'null') {\n return null;\n }\n\n if (lower === 'true') {\n return true;\n }\n\n if (lower === 'false') {\n return false;\n }\n\n var num = Number(str); // will nicely fail with '123ab'\n\n var numFloat = parseFloat(str); // will nicely fail with ' '\n\n if (!isNaN(num) && !isNaN(numFloat)) {\n return num;\n }\n\n return str;\n}\n/**\n * Test whether some field contains a timestamp in milliseconds after the year 2000.\n * @param {string} field\n * @param {number} value\n * @return {boolean}\n */\n\nfunction isTimestamp(field, value) {\n return typeof value === 'number' && value > YEAR_2000 && isFinite(value) && Math.floor(value) === value && !isNaN(new Date(value).valueOf());\n}\n/**\n * Return a human readable document size\n * For example formatSize(7570718) outputs '7.6 MB'\n * @param {number} size\n * @return {string} Returns a human readable size\n */\n\nfunction formatSize(size) {\n if (size < 900) {\n return size.toFixed() + ' B';\n }\n\n var KB = size / 1000;\n\n if (KB < 900) {\n return KB.toFixed(1) + ' KB';\n }\n\n var MB = KB / 1000;\n\n if (MB < 900) {\n return MB.toFixed(1) + ' MB';\n }\n\n var GB = MB / 1000;\n\n if (GB < 900) {\n return GB.toFixed(1) + ' GB';\n }\n\n var TB = GB / 1000;\n return TB.toFixed(1) + ' TB';\n}\n/**\n * Limit text to a maximum number of characters\n * @param {string} text\n * @param {number} maxCharacterCount\n * @return {string} Returns the limited text,\n * ending with '...' if the max was exceeded\n */\n\nfunction limitCharacters(text, maxCharacterCount) {\n if (text.length <= maxCharacterCount) {\n return text;\n }\n\n return text.slice(0, maxCharacterCount) + '...';\n}\n/**\n * Test whether a value is an Object\n * @param {*} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return _typeof(value) === 'object' && value !== null && !Array.isArray(value);\n}\n/**\n * Helper function to test whether an array contains an item\n * @param {Array} array\n * @param {*} item\n * @return {boolean} Returns true if `item` is in `array`, returns false otherwise.\n */\n\nfunction contains(array, item) {\n return array.indexOf(item) !== -1;\n}\n/**\n * Checks if validation has changed from the previous execution\n * @param {Array} currErr current validation errors\n * @param {Array} prevErr previous validation errors\n */\n\nfunction isValidationErrorChanged(currErr, prevErr) {\n if (!prevErr && !currErr) {\n return false;\n }\n\n if (prevErr && !currErr || !prevErr && currErr) {\n return true;\n }\n\n if (prevErr.length !== currErr.length) {\n return true;\n }\n\n var _loop = function _loop(i) {\n var pErr = void 0;\n\n if (currErr[i].type === 'error') {\n pErr = prevErr.find(function (p) {\n return p.line === currErr[i].line;\n });\n } else {\n pErr = prevErr.find(function (p) {\n return p.dataPath === currErr[i].dataPath && p.schemaPath === currErr[i].schemaPath;\n });\n }\n\n if (!pErr) {\n return {\n v: true\n };\n }\n };\n\n for (var i = 0; i < currErr.length; ++i) {\n var _ret = _loop(i);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n return false;\n}\n\nfunction hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return setLanguage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return setLanguages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return translate; });\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_polyfills__WEBPACK_IMPORTED_MODULE_0__);\n\n/* eslint-disable no-template-curly-in-string */\n\n\nvar _locales = ['en', 'pt-BR', 'zh-CN', 'tr', 'ja', 'fr-FR', 'de'];\nvar _defs = {\n en: {\n array: 'Array',\n auto: 'Auto',\n appendText: 'Append',\n appendTitle: 'Append a new field with type \\'auto\\' after this field (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Select the type of the field to be appended',\n appendTitleAuto: 'Append a new field with type \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascending',\n ascendingTitle: 'Sort the childs of this ${type} in ascending order',\n actionsMenu: 'Click to open the actions menu (Ctrl+M)',\n cannotParseFieldError: 'Cannot parse field into JSON',\n cannotParseValueError: 'Cannot parse value into JSON',\n collapseAll: 'Collapse all fields',\n compactTitle: 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\\\)',\n descending: 'Descending',\n descendingTitle: 'Sort the childs of this ${type} in descending order',\n drag: 'Drag to move this field (Alt+Shift+Arrows)',\n duplicateKey: 'duplicate key',\n duplicateText: 'Duplicate',\n duplicateTitle: 'Duplicate selected fields (Ctrl+D)',\n duplicateField: 'Duplicate this field (Ctrl+D)',\n duplicateFieldError: 'Duplicate field name',\n empty: 'empty',\n expandAll: 'Expand all fields',\n expandTitle: 'Click to expand/collapse this field (Ctrl+E). \\n' + 'Ctrl+Click to expand/collapse including all childs.',\n formatTitle: 'Format JSON data, with proper indentation and line feeds (Ctrl+\\\\)',\n insert: 'Insert',\n insertTitle: 'Insert a new field with type \\'auto\\' before this field (Ctrl+Ins)',\n insertSub: 'Select the type of the field to be inserted',\n object: 'Object',\n ok: 'Ok',\n redo: 'Redo (Ctrl+Shift+Z)',\n removeText: 'Remove',\n removeTitle: 'Remove selected fields (Ctrl+Del)',\n removeField: 'Remove this field (Ctrl+Del)',\n repairTitle: 'Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.',\n searchTitle: 'Search fields and values',\n searchNextResultTitle: 'Next result (Enter)',\n searchPreviousResultTitle: 'Previous result (Shift + Enter)',\n selectNode: 'Select a node...',\n showAll: 'show all',\n showMore: 'show more',\n showMoreStatus: 'displaying ${visibleChilds} of ${totalChilds} items.',\n sort: 'Sort',\n sortTitle: 'Sort the childs of this ${type}',\n sortTitleShort: 'Sort contents',\n sortFieldLabel: 'Field:',\n sortDirectionLabel: 'Direction:',\n sortFieldTitle: 'Select the nested field by which to sort the array or object',\n sortAscending: 'Ascending',\n sortAscendingTitle: 'Sort the selected field in ascending order',\n sortDescending: 'Descending',\n sortDescendingTitle: 'Sort the selected field in descending order',\n string: 'String',\n transform: 'Transform',\n transformTitle: 'Filter, sort, or transform the childs of this ${type}',\n transformTitleShort: 'Filter, sort, or transform contents',\n extract: 'Extract',\n extractTitle: 'Extract this ${type}',\n transformQueryTitle: 'Enter a JMESPath query',\n transformWizardLabel: 'Wizard',\n transformWizardFilter: 'Filter',\n transformWizardSortBy: 'Sort by',\n transformWizardSelectFields: 'Select fields',\n transformQueryLabel: 'Query',\n transformPreviewLabel: 'Preview',\n type: 'Type',\n typeTitle: 'Change the type of this field',\n openUrl: 'Ctrl+Click or Ctrl+Enter to open url in new window',\n undo: 'Undo last action (Ctrl+Z)',\n validationCannotMove: 'Cannot move a field into a child of itself',\n autoType: 'Field type \"auto\". ' + 'The field type is automatically determined from the value ' + 'and can be a string, number, boolean, or null.',\n objectType: 'Field type \"object\". ' + 'An object contains an unordered set of key/value pairs.',\n arrayType: 'Field type \"array\". ' + 'An array contains an ordered collection of values.',\n stringType: 'Field type \"string\". ' + 'Field type is not determined from the value, ' + 'but always returned as string.',\n modeEditorTitle: 'Switch Editor Mode',\n modeCodeText: 'Code',\n modeCodeTitle: 'Switch to code highlighter',\n modeFormText: 'Form',\n modeFormTitle: 'Switch to form editor',\n modeTextText: 'Text',\n modeTextTitle: 'Switch to plain text editor',\n modeTreeText: 'Tree',\n modeTreeTitle: 'Switch to tree editor',\n modeViewText: 'View',\n modeViewTitle: 'Switch to tree view',\n modePreviewText: 'Preview',\n modePreviewTitle: 'Switch to preview mode',\n examples: 'Examples',\n \"default\": 'Default',\n containsInvalidProperties: 'Contains invalid properties',\n containsInvalidItems: 'Contains invalid items'\n },\n 'zh-CN': {\n array: '数组',\n auto: '自动',\n appendText: '追加',\n appendTitle: '在此字段后追加一个类型为“auto”的新字段 (Ctrl+Shift+Ins)',\n appendSubmenuTitle: '选择要追加的字段类型',\n appendTitleAuto: '追加类型为“auto”的新字段 (Ctrl+Shift+Ins)',\n ascending: '升序',\n ascendingTitle: '升序排列${type}的子节点',\n actionsMenu: '点击打开动作菜单(Ctrl+M)',\n cannotParseFieldError: '无法将字段解析为JSON',\n cannotParseValueError: '无法将值解析为JSON',\n collapseAll: '缩进所有字段',\n compactTitle: '压缩JSON数据,删除所有空格 (Ctrl+Shift+\\\\)',\n descending: '降序',\n descendingTitle: '降序排列${type}的子节点',\n drag: '拖拽移动该节点(Alt+Shift+Arrows)',\n duplicateKey: '重复键',\n duplicateText: '复制',\n duplicateTitle: '复制选中字段(Ctrl+D)',\n duplicateField: '复制该字段(Ctrl+D)',\n duplicateFieldError: '重复的字段名称',\n empty: '清空',\n expandAll: '展开所有字段',\n expandTitle: '点击 展开/收缩 该字段(Ctrl+E). \\n' + 'Ctrl+Click 展开/收缩 包含所有子节点.',\n formatTitle: '使用适当的缩进和换行符格式化JSON数据 (Ctrl+\\\\)',\n insert: '插入',\n insertTitle: '在此字段前插入类型为“auto”的新字段 (Ctrl+Ins)',\n insertSub: '选择要插入的字段类型',\n object: '对象',\n ok: 'Ok',\n redo: '重做 (Ctrl+Shift+Z)',\n removeText: '移除',\n removeTitle: '移除选中字段 (Ctrl+Del)',\n removeField: '移除该字段 (Ctrl+Del)',\n repairTitle: '修复JSON:修复引号和转义符,删除注释和JSONP表示法,将JavaScript对象转换为JSON。',\n selectNode: '选择一个节点...',\n showAll: '展示全部',\n showMore: '展示更多',\n showMoreStatus: '显示${totalChilds}的${visibleChilds}项目.',\n sort: '排序',\n sortTitle: '排序${type}的子节点',\n sortTitleShort: '内容排序',\n sortFieldLabel: '字段:',\n sortDirectionLabel: '方向:',\n sortFieldTitle: '选择用于对数组或对象排序的嵌套字段',\n sortAscending: '升序排序',\n sortAscendingTitle: '按照该字段升序排序',\n sortDescending: '降序排序',\n sortDescendingTitle: '按照该字段降序排序',\n string: '字符串',\n transform: '变换',\n transformTitle: '筛选,排序,或者转换${type}的子节点',\n transformTitleShort: '筛选,排序,或者转换内容',\n extract: '提取',\n extractTitle: '提取这个 ${type}',\n transformQueryTitle: '输入JMESPath查询',\n transformWizardLabel: '向导',\n transformWizardFilter: '筛选',\n transformWizardSortBy: '排序',\n transformWizardSelectFields: '选择字段',\n transformQueryLabel: '查询',\n transformPreviewLabel: '预览',\n type: '类型',\n typeTitle: '更改字段类型',\n openUrl: 'Ctrl+Click 或者 Ctrl+Enter 在新窗口打开链接',\n undo: '撤销上次动作 (Ctrl+Z)',\n validationCannotMove: '无法将字段移入其子节点',\n autoType: '字段类型 \"auto\". ' + '字段类型由值自动确定 ' + '可以为 string,number,boolean,或者 null.',\n objectType: '字段类型 \"object\". ' + '对象包含一组无序的键/值对.',\n arrayType: '字段类型 \"array\". ' + '数组包含值的有序集合.',\n stringType: '字段类型 \"string\". ' + '字段类型由值自动确定,' + '但始终作为字符串返回.',\n modeCodeText: '代码',\n modeCodeTitle: '切换至代码高亮',\n modeFormText: '表单',\n modeFormTitle: '切换至表单编辑',\n modeTextText: '文本',\n modeTextTitle: '切换至文本编辑',\n modeTreeText: '树',\n modeTreeTitle: '切换至树编辑',\n modeViewText: '视图',\n modeViewTitle: '切换至树视图',\n modePreviewText: '预览',\n modePreviewTitle: '切换至预览模式',\n examples: '例子',\n \"default\": '缺省',\n containsInvalidProperties: '包含无效的属性',\n containsInvalidItems: '包含无效项目'\n },\n 'pt-BR': {\n array: 'Lista',\n auto: 'Automatico',\n appendText: 'Adicionar',\n appendTitle: 'Adicionar novo campo com tipo \\'auto\\' depois deste campo (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Selecione o tipo do campo a ser adicionado',\n appendTitleAuto: 'Adicionar novo campo com tipo \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascendente',\n ascendingTitle: 'Organizar filhor do tipo ${type} em crescente',\n actionsMenu: 'Clique para abrir o menu de ações (Ctrl+M)',\n cannotParseFieldError: 'Não é possível analisar o campo no JSON',\n cannotParseValueError: 'Não é possível analisar o valor em JSON',\n collapseAll: 'Fechar todos campos',\n compactTitle: 'Dados JSON compactos, remova todos os espaços em branco (Ctrl+Shift+\\\\)',\n descending: 'Descendente',\n descendingTitle: 'Organizar o filhos do tipo ${type} em decrescente',\n duplicateKey: 'chave duplicada',\n drag: 'Arraste para mover este campo (Alt+Shift+Arrows)',\n duplicateText: 'Duplicar',\n duplicateTitle: 'Duplicar campos selecionados (Ctrl+D)',\n duplicateField: 'Duplicar este campo (Ctrl+D)',\n duplicateFieldError: 'Nome do campo duplicado',\n empty: 'vazio',\n expandAll: 'Expandir todos campos',\n expandTitle: 'Clique para expandir/encolher este campo (Ctrl+E). \\n' + 'Ctrl+Click para expandir/encolher incluindo todos os filhos.',\n formatTitle: 'Formate dados JSON, com recuo e feeds de linha adequados (Ctrl+\\\\)',\n insert: 'Inserir',\n insertTitle: 'Inserir um novo campo do tipo \\'auto\\' antes deste campo (Ctrl+Ins)',\n insertSub: 'Selecionar o tipo de campo a ser inserido',\n object: 'Objeto',\n ok: 'Ok',\n redo: 'Refazer (Ctrl+Shift+Z)',\n removeText: 'Remover',\n removeTitle: 'Remover campos selecionados (Ctrl+Del)',\n removeField: 'Remover este campo (Ctrl+Del)',\n repairTitle: 'Repare JSON: corrija aspas e caracteres de escape, remova comentários e notação JSONP, transforme objetos JavaScript em JSON.',\n selectNode: 'Selecione um nódulo...',\n showAll: 'mostrar todos',\n showMore: 'mostrar mais',\n showMoreStatus: 'exibindo ${visibleChilds} de ${totalChilds} itens.',\n sort: 'Organizar',\n sortTitle: 'Organizar os filhos deste ${type}',\n sortTitleShort: 'Organizar os filhos',\n sortFieldLabel: 'Campo:',\n sortDirectionLabel: 'Direção:',\n sortFieldTitle: 'Selecione um campo filho pelo qual ordenar o array ou objeto',\n sortAscending: 'Ascendente',\n sortAscendingTitle: 'Ordenar o campo selecionado por ordem ascendente',\n sortDescending: 'Descendente',\n sortDescendingTitle: 'Ordenar o campo selecionado por ordem descendente',\n string: 'Texto',\n transform: 'Transformar',\n transformTitle: 'Filtrar, ordenar ou transformar os filhos deste ${type}',\n transformTitleShort: 'Filtrar, ordenar ou transformar conteúdos',\n transformQueryTitle: 'Insira uma expressão JMESPath',\n transformWizardLabel: 'Assistente',\n transformWizardFilter: 'Filtro',\n transformWizardSortBy: 'Ordenar por',\n transformWizardSelectFields: 'Selecionar campos',\n transformQueryLabel: 'Expressão',\n transformPreviewLabel: 'Visualizar',\n type: 'Tipo',\n typeTitle: 'Mudar o tipo deste campo',\n openUrl: 'Ctrl+Click ou Ctrl+Enter para abrir link em nova janela',\n undo: 'Desfazer último ação (Ctrl+Z)',\n validationCannotMove: 'Não pode mover um campo como filho dele mesmo',\n autoType: 'Campo do tipo \"auto\". ' + 'O tipo do campo é determinao automaticamente a partir do seu valor ' + 'e pode ser texto, número, verdade/falso ou nulo.',\n objectType: 'Campo do tipo \"objeto\". ' + 'Um objeto contém uma lista de pares com chave e valor.',\n arrayType: 'Campo do tipo \"lista\". ' + 'Uma lista contem uma coleção de valores ordenados.',\n stringType: 'Campo do tipo \"string\". ' + 'Campo do tipo nao é determinado através do seu valor, ' + 'mas sempre retornara um texto.',\n examples: 'Exemplos',\n \"default\": 'Revelia',\n containsInvalidProperties: 'Contém propriedades inválidas',\n containsInvalidItems: 'Contém itens inválidos'\n },\n tr: {\n array: 'Dizin',\n auto: 'Otomatik',\n appendText: 'Ekle',\n appendTitle: 'Bu alanın altına \\'otomatik\\' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Eklenecek alanın tipini seç',\n appendTitleAuto: '\\'Otomatik\\' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)',\n ascending: 'Artan',\n ascendingTitle: '${type}\\'ın alt tiplerini artan düzende sırala',\n actionsMenu: 'Aksiyon menüsünü açmak için tıklayın (Ctrl+M)',\n collapseAll: 'Tüm alanları kapat',\n descending: 'Azalan',\n descendingTitle: '${type}\\'ın alt tiplerini azalan düzende sırala',\n drag: 'Bu alanı taşımak için sürükleyin (Alt+Shift+Arrows)',\n duplicateKey: 'Var olan anahtar',\n duplicateText: 'Aşağıya kopyala',\n duplicateTitle: 'Seçili alanlardan bir daha oluştur (Ctrl+D)',\n duplicateField: 'Bu alandan bir daha oluştur (Ctrl+D)',\n duplicateFieldError: 'Duplicate field name',\n cannotParseFieldError: 'Alan JSON\\'a ayrıştırılamıyor',\n cannotParseValueError: 'JSON\\'a değer ayrıştırılamıyor',\n empty: 'boş',\n expandAll: 'Tüm alanları aç',\n expandTitle: 'Bu alanı açmak/kapatmak için tıkla (Ctrl+E). \\n' + 'Alt alanlarda dahil tüm alanları açmak için Ctrl+Click ',\n insert: 'Ekle',\n insertTitle: 'Bu alanın üstüne \\'otomatik\\' tipinde yeni bir alan ekle (Ctrl+Ins)',\n insertSub: 'Araya eklenecek alanın tipini seç',\n object: 'Nesne',\n ok: 'Tamam',\n redo: 'Yeniden yap (Ctrl+Shift+Z)',\n removeText: 'Kaldır',\n removeTitle: 'Seçilen alanları kaldır (Ctrl+Del)',\n removeField: 'Bu alanı kaldır (Ctrl+Del)',\n selectNode: 'Bir nesne seç...',\n showAll: 'tümünü göster',\n showMore: 'daha fazla göster',\n showMoreStatus: '${totalChilds} alanın ${visibleChilds} alt alanları gösteriliyor',\n sort: 'Sırala',\n sortTitle: '${type}\\'ın alt alanlarını sırala',\n sortTitleShort: 'İçerikleri sırala',\n sortFieldLabel: 'Alan:',\n sortDirectionLabel: 'Yön:',\n sortFieldTitle: 'Diziyi veya nesneyi sıralamak için iç içe geçmiş alanı seçin',\n sortAscending: 'Artan',\n sortAscendingTitle: 'Seçili alanı artan düzende sırala',\n sortDescending: 'Azalan',\n sortDescendingTitle: 'Seçili alanı azalan düzende sırala',\n string: 'Karakter Dizisi',\n transform: 'Dönüştür',\n transformTitle: '${type}\\'ın alt alanlarını filtrele, sırala veya dönüştür',\n transformTitleShort: 'İçerikleri filterele, sırala veya dönüştür',\n transformQueryTitle: 'JMESPath sorgusu gir',\n transformWizardLabel: 'Sihirbaz',\n transformWizardFilter: 'Filtre',\n transformWizardSortBy: 'Sırala',\n transformWizardSelectFields: 'Alanları seç',\n transformQueryLabel: 'Sorgu',\n transformPreviewLabel: 'Önizleme',\n type: 'Tip',\n typeTitle: 'Bu alanın tipini değiştir',\n openUrl: 'URL\\'i yeni bir pencerede açmak için Ctrl+Click veya Ctrl+Enter',\n undo: 'Son değişikliği geri al (Ctrl+Z)',\n validationCannotMove: 'Alt alan olarak taşınamıyor',\n autoType: 'Alan tipi \"otomatik\". ' + 'Alan türü otomatik olarak değerden belirlenir' + 've bir dize, sayı, boolean veya null olabilir.',\n objectType: 'Alan tipi \"nesne\". ' + 'Bir nesne, sıralanmamış bir anahtar / değer çifti kümesi içerir.',\n arrayType: 'Alan tipi \"dizi\". ' + 'Bir dizi, düzenli değerler koleksiyonu içerir.',\n stringType: 'Alan tipi \"karakter dizisi\". ' + 'Alan türü değerden belirlenmez,' + 'ancak her zaman karakter dizisi olarak döndürülür.',\n modeCodeText: 'Kod',\n modeCodeTitle: 'Kod vurgulayıcıya geç',\n modeFormText: 'Form',\n modeFormTitle: 'Form düzenleyiciye geç',\n modeTextText: 'Metin',\n modeTextTitle: 'Düz metin düzenleyiciye geç',\n modeTreeText: 'Ağaç',\n modeTreeTitle: 'Ağaç düzenleyiciye geç',\n modeViewText: 'Görünüm',\n modeViewTitle: 'Ağaç görünümüne geç',\n examples: 'Örnekler',\n \"default\": 'Varsayılan',\n containsInvalidProperties: 'Geçersiz özellikler içeriyor',\n containsInvalidItems: 'Geçersiz öğeler içeriyor'\n },\n ja: {\n array: '配列',\n auto: 'オート',\n appendText: '追加',\n appendTitle: '次のフィールドに\"オート\"のフィールドを追加 (Ctrl+Shift+Ins)',\n appendSubmenuTitle: '追加するフィールドの型を選択してください',\n appendTitleAuto: '\"オート\"のフィールドを追加 (Ctrl+Shift+Ins)',\n ascending: '昇順',\n ascendingTitle: '${type}の子要素を昇順に並べ替え',\n actionsMenu: 'クリックしてアクションメニューを開く (Ctrl+M)',\n collapseAll: 'すべてを折りたたむ',\n descending: '降順',\n descendingTitle: '${type}の子要素を降順に並べ替え',\n drag: 'ドラッグして選択中のフィールドを移動 (Alt+Shift+Arrows)',\n duplicateKey: '複製キー',\n duplicateText: '複製',\n duplicateTitle: '選択中のフィールドを複製 (Ctrl+D)',\n duplicateField: '選択中のフィールドを複製 (Ctrl+D)',\n duplicateFieldError: 'フィールド名が重複しています',\n cannotParseFieldError: 'JSONのフィールドを解析できません',\n cannotParseValueError: 'JSONの値を解析できません',\n empty: '空',\n expandAll: 'すべてを展開',\n expandTitle: 'クリックしてフィールドを展開/折りたたむ (Ctrl+E). \\n' + 'Ctrl+Click ですべての子要素を展開/折りたたむ',\n insert: '挿入',\n insertTitle: '選択中のフィールドの前に新しいフィールドを挿入 (Ctrl+Ins)',\n insertSub: '挿入するフィールドの型を選択',\n object: 'オブジェクト',\n ok: '実行',\n redo: 'やり直す (Ctrl+Shift+Z)',\n removeText: '削除',\n removeTitle: '選択中のフィールドを削除 (Ctrl+Del)',\n removeField: '選択中のフィールドを削除 (Ctrl+Del)',\n selectNode: 'ノードを選択...',\n showAll: 'すべてを表示',\n showMore: 'もっと見る',\n showMoreStatus: '${totalChilds}個のアイテムのうち ${visibleChilds}個を表示しています。',\n sort: '並べ替え',\n sortTitle: '${type}の子要素を並べ替え',\n sortTitleShort: '並べ替え',\n sortFieldLabel: 'フィールド:',\n sortDirectionLabel: '順序:',\n sortFieldTitle: '配列またはオブジェクトを並び替えるためのフィールドを選択',\n sortAscending: '昇順',\n sortAscendingTitle: '選択中のフィールドを昇順に並び替え',\n sortDescending: '降順',\n sortDescendingTitle: '選択中のフィールドを降順に並び替え',\n string: '文字列',\n transform: '変換',\n transformTitle: '${type}の子要素をフィルター・並び替え・変換する',\n transformTitleShort: '内容をフィルター・並び替え・変換する',\n extract: '抽出',\n extractTitle: '${type}を抽出',\n transformQueryTitle: 'JMESPathクエリを入力',\n transformWizardLabel: 'ウィザード',\n transformWizardFilter: 'フィルター',\n transformWizardSortBy: '並び替え',\n transformWizardSelectFields: 'フィールドを選択',\n transformQueryLabel: 'クエリ',\n transformPreviewLabel: 'プレビュー',\n type: '型',\n typeTitle: '選択中のフィールドの型を変更',\n openUrl: 'Ctrl+Click または Ctrl+Enter で 新規ウィンドウでURLを開く',\n undo: '元に戻す (Ctrl+Z)',\n validationCannotMove: '子要素に移動できません ',\n autoType: 'オート: ' + 'フィールドの型は値から自動的に決定されます。 ' + '(文字列・数値・ブール・null)',\n objectType: 'オブジェクト: ' + 'オブジェクトは順序が決まっていないキーと値のペア組み合わせです。',\n arrayType: '配列: ' + '配列は順序が決まっている値の集合体です。',\n stringType: '文字列: ' + 'フィールド型は値から決定されませんが、' + '常に文字列として返されます。',\n modeCodeText: 'コードモード',\n modeCodeTitle: 'ハイライトモードに切り替え',\n modeFormText: 'フォームモード',\n modeFormTitle: 'フォームモードに切り替え',\n modeTextText: 'テキストモード',\n modeTextTitle: 'テキストモードに切り替え',\n modeTreeText: 'ツリーモード',\n modeTreeTitle: 'ツリーモードに切り替え',\n modeViewText: 'ビューモード',\n modeViewTitle: 'ビューモードに切り替え',\n modePreviewText: 'プレビュー',\n modePreviewTitle: 'プレビューに切り替え',\n examples: '例',\n \"default\": 'デフォルト',\n containsInvalidProperties: '無効なプロパティが含まれています',\n containsInvalidItems: '無効なアイテムが含まれています'\n },\n 'fr-FR': {\n array: 'Liste',\n auto: 'Auto',\n appendText: 'Ajouter',\n appendTitle: 'Ajouter un champ de type \\'auto\\' après ce champ (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Sélectionner le type du champ à ajouter',\n appendTitleAuto: 'Ajouter un champ de type \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascendant',\n ascendingTitle: 'Trier les enfants de ce ${type} par ordre ascendant',\n actionsMenu: 'Ouvrir le menu des actions (Ctrl+M)',\n collapseAll: 'Regrouper',\n descending: 'Descendant',\n descendingTitle: 'Trier les enfants de ce ${type} par ordre descendant',\n drag: 'Déplacer (Alt+Shift+Arrows)',\n duplicateKey: 'Dupliquer la clé',\n duplicateText: 'Dupliquer',\n duplicateTitle: 'Dupliquer les champs sélectionnés (Ctrl+D)',\n duplicateField: 'Dupliquer ce champ (Ctrl+D)',\n duplicateFieldError: 'Dupliquer le nom de champ',\n cannotParseFieldError: 'Champ impossible à parser en JSON',\n cannotParseValueError: 'Valeur impossible à parser en JSON',\n empty: 'vide',\n expandAll: 'Étendre',\n expandTitle: 'Étendre/regrouper ce champ (Ctrl+E). \\n' + 'Ctrl+Click pour étendre/regrouper avec tous les champs.',\n insert: 'Insérer',\n insertTitle: 'Insérer un champ de type \\'auto\\' avant ce champ (Ctrl+Ins)',\n insertSub: 'Sélectionner le type de champ à insérer',\n object: 'Objet',\n ok: 'Ok',\n redo: 'Rejouer (Ctrl+Shift+Z)',\n removeText: 'Supprimer',\n removeTitle: 'Supprimer les champs sélectionnés (Ctrl+Del)',\n removeField: 'Supprimer ce champ (Ctrl+Del)',\n searchTitle: 'Rechercher champs et valeurs',\n searchNextResultTitle: 'Résultat suivant (Enter)',\n searchPreviousResultTitle: 'Résultat précédent (Shift + Enter)',\n selectNode: 'Sélectionner un nœud...',\n showAll: 'voir tout',\n showMore: 'voir plus',\n showMoreStatus: '${visibleChilds} éléments affichés de ${totalChilds}.',\n sort: 'Trier',\n sortTitle: 'Trier les champs de ce ${type}',\n sortTitleShort: 'Trier',\n sortFieldLabel: 'Champ:',\n sortDirectionLabel: 'Direction:',\n sortFieldTitle: 'Sélectionner les champs permettant de trier les listes et objet',\n sortAscending: 'Ascendant',\n sortAscendingTitle: 'Trier les champs sélectionnés par ordre ascendant',\n sortDescending: 'Descendant',\n sortDescendingTitle: 'Trier les champs sélectionnés par ordre descendant',\n string: 'Chaîne',\n transform: 'Transformer',\n transformTitle: 'Filtrer, trier, or transformer les enfants de ce ${type}',\n transformTitleShort: 'Filtrer, trier ou transformer le contenu',\n extract: 'Extraire',\n extractTitle: 'Extraire ce ${type}',\n transformQueryTitle: 'Saisir une requête JMESPath',\n transformWizardLabel: 'Assistant',\n transformWizardFilter: 'Filtrer',\n transformWizardSortBy: 'Trier par',\n transformWizardSelectFields: 'Sélectionner les champs',\n transformQueryLabel: 'Requête',\n transformPreviewLabel: 'Prévisualisation',\n type: 'Type',\n typeTitle: 'Changer le type de ce champ',\n openUrl: 'Ctrl+Click ou Ctrl+Enter pour ouvrir l\\'url dans une autre fenêtre',\n undo: 'Annuler la dernière action (Ctrl+Z)',\n validationCannotMove: 'Cannot move a field into a child of itself',\n autoType: 'Champe de type \"auto\". ' + 'Ce type de champ est automatiquement déterminé en fonction de la valeur ' + 'et peut être de type \"chaîne\", \"nombre\", \"booléen\" ou null.',\n objectType: 'Champ de type \"objet\". ' + 'Un objet contient un ensemble non ordonné de paires clé/valeur.',\n arrayType: 'Champ de type \"liste\". ' + 'Une liste contient une collection ordonnée de valeurs.',\n stringType: 'Champ de type \"chaîne\". ' + 'Ce type de champ n\\'est pas déterminé en fonction de la valeur, ' + 'mais retourne systématiquement une chaîne de caractères.',\n modeEditorTitle: 'Changer mode d\\'édition',\n modeCodeText: 'Code',\n modeCodeTitle: 'Activer surlignage code',\n modeFormText: 'Formulaire',\n modeFormTitle: 'Activer formulaire',\n modeTextText: 'Texte',\n modeTextTitle: 'Activer éditeur texte',\n modeTreeText: 'Arbre',\n modeTreeTitle: 'Activer éditeur arbre',\n modeViewText: 'Lecture seule',\n modeViewTitle: 'Activer vue arbre',\n modePreviewText: 'Prévisualisation',\n modePreviewTitle: 'Activer mode prévisualiser',\n examples: 'Exemples',\n \"default\": 'Défaut',\n containsInvalidProperties: 'Contient des propriétés non valides',\n containsInvalidItems: 'Contient des éléments invalides'\n },\n de: {\n array: 'Auflistung',\n auto: 'Auto',\n appendText: 'anhängen',\n appendTitle: 'Fügen Sie nach diesem Feld ein neues Feld mit dem Typ \\'auto\\' ein (Strg+Umschalt+Ein)',\n appendSubmenuTitle: 'Wählen Sie den Typ des neuen Feldes',\n appendTitleAuto: 'Ein neues Feld vom Typ \\'auto\\' hinzufügen (Strg+Umschalt+Ein)',\n ascending: 'Aufsteigend',\n ascendingTitle: 'Sortieren Sie die Elemente dieses ${type} in aufsteigender Reihenfolge',\n actionsMenu: 'Klicken Sie zum Öffnen des Aktionsmenüs (Strg+M)',\n cannotParseFieldError: 'Feld kann nicht in JSON geparst werden',\n cannotParseValueError: 'Wert kann nicht in JSON geparst werden',\n collapseAll: 'Alle Felder zuklappen',\n compactTitle: 'JSON-Daten verdichten, alle Leerzeichen entfernen (Strg+Umschalt+\\\\)',\n descending: 'Absteigend',\n descendingTitle: 'Sortieren Sie die Elemente dieses ${type} in absteigender Reihenfolge',\n drag: 'Ziehen, um dieses Feld zu verschieben (Alt+Umschalt+Pfeile)',\n duplicateKey: 'Doppelter Schlüssel',\n duplicateText: 'Duplikat',\n duplicateTitle: 'Ausgewählte Felder duplizieren (Strg+D)',\n duplicateField: 'Dieses Feld duplizieren (Strg+D)',\n duplicateFieldError: 'Doppelter Feldname',\n empty: 'leer',\n expandAll: 'Alle Felder anzeigen',\n expandTitle: 'Klicken Sie, um dieses Feld zu erweitern/zu kollabieren (Strg+E). \\nStrg+Klicken Sie, um dieses Feld einschließlich aller Elemente zu erweitern/zu kollabieren.',\n formatTitle: 'JSON-Daten mit korrekter Einrückung und Zeilenvorschüben formatieren (Strg+\\\\)',\n insert: 'einfügen',\n insertTitle: 'Fügen Sie vor diesem Feld ein neues Feld mit dem Typ \\'auto\\' ein (Strg+Einfg)',\n insertSub: 'Wählen Sie den Typ des neuen Feldes',\n object: 'Objekt',\n ok: 'Ok',\n redo: 'Wiederholen (Strg+Umschalt+Z)',\n removeText: 'entfernen',\n removeTitle: 'Ausgewählte Felder entfernen (Strg+Entf)',\n removeField: 'Dieses Feld entfernen (Strg+Entf)',\n repairTitle: 'JSON reparieren: Anführungszeichen und Escape-Zeichen korrigieren, Kommentare und JSONP-Notation entfernen, JavaScript-Objekte in JSON umwandeln.',\n searchTitle: 'Suchfelder und Werte',\n searchNextResultTitle: 'Nächstes Ergebnis (Enter)',\n searchPreviousResultTitle: 'Vorheriges Ergebnis (Umschalt + Eingabe)',\n selectNode: 'Wählen Sie einen Knoten aus...',\n showAll: 'alle anzeigen',\n showMore: 'mehr anzeigen',\n showMoreStatus: 'Anzeige von ${visibleChilds} von ${totalChilds}-Elementen.',\n sort: 'Sortieren',\n sortTitle: 'Sortieren Sie die Elemente dieses ${type}',\n sortTitleShort: 'Inhalt sortieren',\n sortFieldLabel: 'Feld:',\n sortDirectionLabel: 'Richtung:',\n sortFieldTitle: 'Wählen Sie das verschachtelte Feld, nach dem das Array oder Objekt sortiert werden soll.',\n sortAscending: 'Aufsteigend',\n sortAscendingTitle: 'Sortieren Sie das ausgewählte Feld in aufsteigender Reihenfolge',\n sortDescending: 'Absteigend',\n sortDescendingTitle: 'Sortieren Sie das ausgewählte Feld in absteigender Reihenfolge',\n string: 'Zeichenfolge',\n transform: 'Verwandeln',\n transformTitle: 'Die Elemente dieses ${type} filtern, sortieren oder transformieren',\n transformTitleShort: 'Inhalte filtern, sortieren oder transformieren',\n extract: 'Auszug',\n extractTitle: 'Extrahieren Sie diesen ${type}',\n transformQueryTitle: 'Eine JMESPath-Abfrage eingeben',\n transformWizardLabel: 'Zauberer',\n transformWizardFilter: 'Filter',\n transformWizardSortBy: 'Sortieren nach',\n transformWizardSelectFields: 'Felder auswählen',\n transformQueryLabel: 'Anfrage',\n transformPreviewLabel: 'Vorschau',\n type: 'Geben Sie ein.',\n typeTitle: 'Ändern Sie den Typ dieses Feldes',\n openUrl: 'Strg+Klicken oder Strg+Eingabe, um die URL in einem neuen Fenster zu öffnen',\n undo: 'Letzte Aktion rückgängig machen (Strg+Z)',\n validationCannotMove: 'Kann ein Feld nicht in ein Kind seiner selbst verschieben',\n autoType: 'Feldtyp \"auto\". Der Feldtyp wird automatisch aus dem Wert bestimmt und kann ein String, eine Zahl, boolesch oder null sein.',\n objectType: 'Feldtyp \"Objekt\". Ein Objekt enthält eine ungeordnete Menge von Schlüssel/Wert-Paaren.',\n arrayType: 'Feldtyp \"Array\". Ein Array enthält eine geordnete Sammlung von Werten.',\n stringType: 'Feldtyp \"Zeichenfolge\". Der Feldtyp wird nicht aus dem Wert bestimmt, sondern immer als Zeichenfolge zurückgegeben.',\n modeEditorTitle: 'Editor-Modus umschalten',\n modeCodeText: 'Code',\n modeCodeTitle: 'Umschalten auf Code-Highlighter',\n modeFormText: 'Formular',\n modeFormTitle: 'Zum Formular-Editor wechseln',\n modeTextText: 'Text',\n modeTextTitle: 'Zum Editor für einfachen Text wechseln',\n modeTreeText: 'Baum',\n modeTreeTitle: 'Zum Baum-Editor wechseln',\n modeViewText: 'Siehe',\n modeViewTitle: 'Zur Baumansicht wechseln',\n modePreviewText: 'Vorschau',\n modePreviewTitle: 'In den Vorschau-Modus wechseln',\n examples: 'Beispiele',\n \"default\": 'Standardmäßig',\n containsInvalidProperties: 'Enthält ungültige Eigenschaften',\n containsInvalidItems: 'Enthält ungültige Elemente'\n }\n};\nvar _defaultLang = 'en';\nvar userLang = typeof navigator !== 'undefined' ? navigator.language || navigator.userLanguage : undefined;\n\nvar _lang = _locales.find(function (l) {\n return l === userLang;\n}) || _defaultLang;\n\nfunction setLanguage(lang) {\n if (!lang) {\n return;\n }\n\n var langFound = _locales.find(function (l) {\n return l === lang;\n });\n\n if (langFound) {\n _lang = langFound;\n } else {\n console.error('Language not found');\n }\n}\nfunction setLanguages(languages) {\n if (!languages) {\n return;\n }\n\n var _loop = function _loop(language) {\n var langFound = _locales.find(function (l) {\n return l === language;\n });\n\n if (!langFound) {\n _locales.push(language);\n }\n\n _defs[language] = Object.assign({}, _defs[_defaultLang], _defs[language], languages[language]);\n };\n\n for (var language in languages) {\n _loop(language);\n }\n}\nfunction translate(key, data, lang) {\n if (!lang) {\n lang = _lang;\n }\n\n var text = _defs[lang][key] || _defs[_defaultLang][key] || key;\n\n if (data) {\n for (var dataKey in data) {\n text = text.replace('${' + dataKey + '}', data[dataKey]);\n }\n }\n\n return text;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DEFAULT_MODAL_ANCHOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SIZE_LARGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return MAX_PREVIEW_CHARACTERS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PREVIEW_HISTORY_LIMIT; });\nvar DEFAULT_MODAL_ANCHOR = document.body;\nvar SIZE_LARGE = 10 * 1024 * 1024; // 10 MB\n\nvar MAX_PREVIEW_CHARACTERS = 20000;\nvar PREVIEW_HISTORY_LIMIT = 2 * 1024 * 1024 * 1024; // 2 GB\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ContextMenu; });\n/* harmony import */ var _createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n/**\n * A context menu\n * @param {Object[]} items Array containing the menu structure\n * TODO: describe structure\n * @param {Object} [options] Object with options. Available options:\n * {function} close Callback called when the\n * context menu is being closed.\n * {boolean} limitHeight Whether ContextMenu height should be\n * limited or not.\n * @constructor\n */\n\nvar ContextMenu = /*#__PURE__*/function () {\n function ContextMenu(items, options) {\n _classCallCheck(this, ContextMenu);\n\n this.dom = {};\n var me = this;\n var dom = this.dom;\n this.anchor = undefined;\n this.items = items;\n this.eventListeners = {};\n this.selection = undefined; // holds the selection before the menu was opened\n\n this.onClose = options ? options.close : undefined;\n this.limitHeight = options ? options.limitHeight : false; // create root element\n\n var root = document.createElement('div');\n root.className = 'jsoneditor-contextmenu-root';\n dom.root = root; // create a container element\n\n var menu = document.createElement('div');\n menu.className = 'jsoneditor-contextmenu';\n dom.menu = menu;\n root.appendChild(menu); // create a list to hold the menu items\n\n var list = document.createElement('ul');\n list.className = 'jsoneditor-menu';\n menu.appendChild(list);\n dom.list = list;\n dom.items = []; // list with all buttons\n // create a (non-visible) button to set the focus to the menu\n\n var focusButton = document.createElement('button');\n focusButton.type = 'button';\n dom.focusButton = focusButton;\n var li = document.createElement('li');\n li.style.overflow = 'hidden';\n li.style.height = '0';\n li.appendChild(focusButton);\n list.appendChild(li);\n\n function createMenuItems(list, domItems, items) {\n items.forEach(function (item) {\n if (item.type === 'separator') {\n // create a separator\n var separator = document.createElement('div');\n separator.className = 'jsoneditor-separator';\n\n var _li = document.createElement('li');\n\n _li.appendChild(separator);\n\n list.appendChild(_li);\n } else {\n var domItem = {}; // create a menu item\n\n var _li2 = document.createElement('li');\n\n list.appendChild(_li2); // create a button in the menu item\n\n var button = document.createElement('button');\n button.type = 'button';\n button.className = item.className;\n domItem.button = button;\n\n if (item.title) {\n button.title = item.title;\n }\n\n if (item.click) {\n button.onclick = function (event) {\n event.preventDefault();\n me.hide();\n item.click();\n };\n }\n\n _li2.appendChild(button); // create the contents of the button\n\n\n if (item.submenu) {\n // add the icon to the button\n var divIcon = document.createElement('div');\n divIcon.className = 'jsoneditor-icon';\n button.appendChild(divIcon);\n var divText = document.createElement('div');\n divText.className = 'jsoneditor-text' + (item.click ? '' : ' jsoneditor-right-margin');\n divText.appendChild(document.createTextNode(item.text));\n button.appendChild(divText);\n var buttonSubmenu;\n\n if (item.click) {\n // submenu and a button with a click handler\n button.className += ' jsoneditor-default';\n var buttonExpand = document.createElement('button');\n buttonExpand.type = 'button';\n domItem.buttonExpand = buttonExpand;\n buttonExpand.className = 'jsoneditor-expand';\n var buttonExpandInner = document.createElement('div');\n buttonExpandInner.className = 'jsoneditor-expand';\n buttonExpand.appendChild(buttonExpandInner);\n\n _li2.appendChild(buttonExpand);\n\n if (item.submenuTitle) {\n buttonExpand.title = item.submenuTitle;\n }\n\n buttonSubmenu = buttonExpand;\n } else {\n // submenu and a button without a click handler\n var divExpand = document.createElement('div');\n divExpand.className = 'jsoneditor-expand';\n button.appendChild(divExpand);\n buttonSubmenu = button;\n } // attach a handler to expand/collapse the submenu\n\n\n buttonSubmenu.onclick = function (event) {\n event.preventDefault();\n\n me._onExpandItem(domItem);\n\n buttonSubmenu.focus();\n }; // create the submenu\n\n\n var domSubItems = [];\n domItem.subItems = domSubItems;\n var ul = document.createElement('ul');\n domItem.ul = ul;\n ul.className = 'jsoneditor-menu';\n ul.style.height = '0';\n\n _li2.appendChild(ul);\n\n createMenuItems(ul, domSubItems, item.submenu);\n } else {\n // no submenu, just a button with clickhandler\n var icon = document.createElement('div');\n icon.className = 'jsoneditor-icon';\n button.appendChild(icon);\n var text = document.createElement('div');\n text.className = 'jsoneditor-text';\n text.appendChild(document.createTextNode(Object(_i18n__WEBPACK_IMPORTED_MODULE_2__[/* translate */ \"c\"])(item.text)));\n button.appendChild(text);\n }\n\n domItems.push(domItem);\n }\n });\n }\n\n createMenuItems(list, this.dom.items, items); // TODO: when the editor is small, show the submenu on the right instead of inline?\n // calculate the max height of the menu with one submenu expanded\n\n this.maxHeight = 0; // height in pixels\n\n items.forEach(function (item) {\n var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24;\n me.maxHeight = Math.max(me.maxHeight, height);\n });\n }\n /**\n * Get the currently visible buttons\n * @return {Array.<HTMLElement>} buttons\n * @private\n */\n\n\n _createClass(ContextMenu, [{\n key: \"_getVisibleButtons\",\n value: function _getVisibleButtons() {\n var buttons = [];\n var me = this;\n this.dom.items.forEach(function (item) {\n buttons.push(item.button);\n\n if (item.buttonExpand) {\n buttons.push(item.buttonExpand);\n }\n\n if (item.subItems && item === me.expandedItem) {\n item.subItems.forEach(function (subItem) {\n buttons.push(subItem.button);\n\n if (subItem.buttonExpand) {\n buttons.push(subItem.buttonExpand);\n } // TODO: change to fully recursive method\n\n });\n }\n });\n return buttons;\n }\n /**\n * Attach the menu to an anchor\n * @param {HTMLElement} anchor Anchor where the menu will be attached as sibling.\n * @param {HTMLElement} frame The root of the JSONEditor window\n * @param {Boolean=} ignoreParent ignore anchor parent in regard to the calculation of the position, needed when the parent position is absolute\n */\n\n }, {\n key: \"show\",\n value: function show(anchor, frame, ignoreParent) {\n this.hide(); // determine whether to display the menu below or above the anchor\n\n var showBelow = true;\n var parent = anchor.parentNode;\n var anchorRect = anchor.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n var frameRect = frame.getBoundingClientRect();\n var me = this;\n this.dom.absoluteAnchor = Object(_createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__[/* createAbsoluteAnchor */ \"a\"])(anchor, frame, function () {\n me.hide();\n });\n\n if (anchorRect.bottom + this.maxHeight < frameRect.bottom) {// fits below -> show below\n } else if (anchorRect.top - this.maxHeight > frameRect.top) {\n // fits above -> show above\n showBelow = false;\n } else {// doesn't fit above nor below -> show below\n }\n\n var topGap = ignoreParent ? 0 : anchorRect.top - parentRect.top; // position the menu\n\n if (showBelow) {\n // display the menu below the anchor\n var anchorHeight = anchor.offsetHeight;\n this.dom.menu.style.left = '0';\n this.dom.menu.style.top = topGap + anchorHeight + 'px';\n this.dom.menu.style.bottom = '';\n } else {\n // display the menu above the anchor\n this.dom.menu.style.left = '0';\n this.dom.menu.style.top = '';\n this.dom.menu.style.bottom = '0px';\n }\n\n if (this.limitHeight) {\n var margin = 10; // make sure there is a little margin left\n\n var maxPossibleMenuHeight = showBelow ? frameRect.bottom - anchorRect.bottom - margin : anchorRect.top - frameRect.top - margin;\n this.dom.list.style.maxHeight = maxPossibleMenuHeight + 'px';\n this.dom.list.style.overflowY = 'auto';\n } // attach the menu to the temporary, absolute anchor\n // parent.insertBefore(this.dom.root, anchor);\n\n\n this.dom.absoluteAnchor.appendChild(this.dom.root); // move focus to the first button in the context menu\n\n this.selection = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getSelection\"])();\n this.anchor = anchor;\n setTimeout(function () {\n me.dom.focusButton.focus();\n }, 0);\n\n if (ContextMenu.visibleMenu) {\n ContextMenu.visibleMenu.hide();\n }\n\n ContextMenu.visibleMenu = this;\n }\n /**\n * Hide the context menu if visible\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n // remove temporary absolutely positioned anchor\n if (this.dom.absoluteAnchor) {\n this.dom.absoluteAnchor.destroy();\n delete this.dom.absoluteAnchor;\n } // remove the menu from the DOM\n\n\n if (this.dom.root.parentNode) {\n this.dom.root.parentNode.removeChild(this.dom.root);\n\n if (this.onClose) {\n this.onClose();\n }\n }\n\n if (ContextMenu.visibleMenu === this) {\n ContextMenu.visibleMenu = undefined;\n }\n }\n /**\n * Expand a submenu\n * Any currently expanded submenu will be hided.\n * @param {Object} domItem\n * @private\n */\n\n }, {\n key: \"_onExpandItem\",\n value: function _onExpandItem(domItem) {\n var me = this;\n var alreadyVisible = domItem === this.expandedItem; // hide the currently visible submenu\n\n var expandedItem = this.expandedItem;\n\n if (expandedItem) {\n // var ul = expandedItem.ul;\n expandedItem.ul.style.height = '0';\n expandedItem.ul.style.padding = '';\n setTimeout(function () {\n if (me.expandedItem !== expandedItem) {\n expandedItem.ul.style.display = '';\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"removeClassName\"])(expandedItem.ul.parentNode, 'jsoneditor-selected');\n }\n }, 300); // timeout duration must match the css transition duration\n\n this.expandedItem = undefined;\n }\n\n if (!alreadyVisible) {\n var ul = domItem.ul;\n ul.style.display = 'block'; // eslint-disable-next-line no-unused-expressions\n\n ul.clientHeight; // force a reflow in Firefox\n\n setTimeout(function () {\n if (me.expandedItem === domItem) {\n var childsHeight = 0;\n\n for (var i = 0; i < ul.childNodes.length; i++) {\n childsHeight += ul.childNodes[i].clientHeight;\n }\n\n ul.style.height = childsHeight + 'px';\n ul.style.padding = '5px 10px';\n }\n }, 0);\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"addClassName\"])(ul.parentNode, 'jsoneditor-selected');\n this.expandedItem = domItem;\n }\n }\n /**\n * Handle onkeydown event\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var target = event.target;\n var keynum = event.which;\n var handled = false;\n var buttons, targetIndex, prevButton, nextButton;\n\n if (keynum === 27) {\n // ESC\n // hide the menu on ESC key\n // restore previous selection and focus\n if (this.selection) {\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"setSelection\"])(this.selection);\n }\n\n if (this.anchor) {\n this.anchor.focus();\n }\n\n this.hide();\n handled = true;\n } else if (keynum === 9) {\n // Tab\n if (!event.shiftKey) {\n // Tab\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n\n if (targetIndex === buttons.length - 1) {\n // move to first button\n buttons[0].focus();\n handled = true;\n }\n } else {\n // Shift+Tab\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n\n if (targetIndex === 0) {\n // move to last button\n buttons[buttons.length - 1].focus();\n handled = true;\n }\n }\n } else if (keynum === 37) {\n // Arrow Left\n if (target.className === 'jsoneditor-expand') {\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n prevButton = buttons[targetIndex - 1];\n\n if (prevButton) {\n prevButton.focus();\n }\n }\n\n handled = true;\n } else if (keynum === 38) {\n // Arrow Up\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n prevButton = buttons[targetIndex - 1];\n\n if (prevButton && prevButton.className === 'jsoneditor-expand') {\n // skip expand button\n prevButton = buttons[targetIndex - 2];\n }\n\n if (!prevButton) {\n // move to last button\n prevButton = buttons[buttons.length - 1];\n }\n\n if (prevButton) {\n prevButton.focus();\n }\n\n handled = true;\n } else if (keynum === 39) {\n // Arrow Right\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n nextButton = buttons[targetIndex + 1];\n\n if (nextButton && nextButton.className === 'jsoneditor-expand') {\n nextButton.focus();\n }\n\n handled = true;\n } else if (keynum === 40) {\n // Arrow Down\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n nextButton = buttons[targetIndex + 1];\n\n if (nextButton && nextButton.className === 'jsoneditor-expand') {\n // skip expand button\n nextButton = buttons[targetIndex + 2];\n }\n\n if (!nextButton) {\n // move to first button\n nextButton = buttons[0];\n }\n\n if (nextButton) {\n nextButton.focus();\n handled = true;\n }\n\n handled = true;\n } // TODO: arrow left and right\n\n\n if (handled) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }]);\n\n return ContextMenu;\n}(); // currently displayed context menu, a singleton. We may only have one visible context menu\n\nContextMenu.visibleMenu = undefined;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return createQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return executeQuery; });\n/* harmony import */ var jmespath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21);\n/* harmony import */ var jmespath__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jmespath__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);\n\n\n/**\n * Build a JMESPath query based on query options coming from the wizard\n * @param {JSON} json The JSON document for which to build the query.\n * Used for context information like determining\n * the type of values (string or number)\n * @param {QueryOptions} queryOptions\n * @return {string} Returns a query (as string)\n */\n\nfunction createQuery(json, queryOptions) {\n var sort = queryOptions.sort,\n filter = queryOptions.filter,\n projection = queryOptions.projection;\n var query = '';\n\n if (filter) {\n var examplePath = filter.field !== '@' ? ['0'].concat(Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"parsePath\"])('.' + filter.field)) : ['0'];\n var exampleValue = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(json, examplePath);\n var value1 = typeof exampleValue === 'string' ? filter.value : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"parseString\"])(filter.value);\n query += '[? ' + filter.field + ' ' + filter.relation + ' ' + '`' + JSON.stringify(value1) + '`' + ']';\n } else {\n query += Array.isArray(json) ? '[*]' : '@';\n }\n\n if (sort) {\n if (sort.direction === 'desc') {\n query += ' | reverse(sort_by(@, &' + sort.field + '))';\n } else {\n query += ' | sort_by(@, &' + sort.field + ')';\n }\n }\n\n if (projection) {\n if (query[query.length - 1] !== ']') {\n query += ' | [*]';\n }\n\n if (projection.fields.length === 1) {\n query += '.' + projection.fields[0];\n } else if (projection.fields.length > 1) {\n query += '.{' + projection.fields.map(function (value) {\n var parts = value.split('.');\n var last = parts[parts.length - 1];\n return last + ': ' + value;\n }).join(', ') + '}';\n } else {// values.length === 0\n // ignore\n }\n }\n\n return query;\n}\n/**\n * Execute a JMESPath query\n * @param {JSON} json\n * @param {string} query\n * @return {JSON} Returns the transformed JSON\n */\n\nfunction executeQuery(json, query) {\n return jmespath__WEBPACK_IMPORTED_MODULE_0___default.a.search(json, query);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSortModal\", function() { return showSortModal; });\n/* harmony import */ var picomodal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);\n/* harmony import */ var picomodal__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(picomodal__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);\n\n\n\n/**\n * Show advanced sorting modal\n * @param {HTMLElement} container The container where to center\n * the modal and create an overlay\n * @param {JSON} json The JSON data to be sorted.\n * @param {function} onSort Callback function, invoked with\n * an object containing the selected\n * path and direction\n * @param {Object} options\n * Available options:\n * - {string} path The selected path\n * - {'asc' | 'desc'} direction The selected direction\n */\n\nfunction showSortModal(container, json, onSort, options) {\n var paths = Array.isArray(json) ? Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getChildPaths\"])(json) : [''];\n var selectedPath = options && options.path && Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"contains\"])(paths, options.path) ? options.path : paths[0];\n var selectedDirection = options && options.direction || 'asc';\n var content = '<div class=\"pico-modal-contents\">' + '<div class=\"pico-modal-header\">' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sort') + '</div>' + '<form>' + '<table>' + '<tbody>' + '<tr>' + ' <td>' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortFieldLabel') + ' </td>' + ' <td class=\"jsoneditor-modal-input\">' + ' <div class=\"jsoneditor-select-wrapper\">' + ' <select id=\"field\" title=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortFieldTitle') + '\">' + ' </select>' + ' </div>' + ' </td>' + '</tr>' + '<tr>' + ' <td>' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortDirectionLabel') + ' </td>' + ' <td class=\"jsoneditor-modal-input\">' + ' <div id=\"direction\" class=\"jsoneditor-button-group\">' + '<input type=\"button\" ' + 'value=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortAscending') + '\" ' + 'title=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortAscendingTitle') + '\" ' + 'data-value=\"asc\" ' + 'class=\"jsoneditor-button-first jsoneditor-button-asc\"/>' + '<input type=\"button\" ' + 'value=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortDescending') + '\" ' + 'title=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('sortDescendingTitle') + '\" ' + 'data-value=\"desc\" ' + 'class=\"jsoneditor-button-last jsoneditor-button-desc\"/>' + ' </div>' + ' </td>' + '</tr>' + '<tr>' + '<td colspan=\"2\" class=\"jsoneditor-modal-input jsoneditor-modal-actions\">' + ' <input type=\"submit\" id=\"ok\" value=\"' + Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('ok') + '\" />' + '</td>' + '</tr>' + '</tbody>' + '</table>' + '</form>' + '</div>';\n picomodal__WEBPACK_IMPORTED_MODULE_0___default()({\n parent: container,\n content: content,\n overlayClass: 'jsoneditor-modal-overlay',\n overlayStyles: {\n backgroundColor: 'rgb(1,1,1)',\n opacity: 0.3\n },\n modalClass: 'jsoneditor-modal jsoneditor-modal-sort'\n }).afterCreate(function (modal) {\n var form = modal.modalElem().querySelector('form');\n var ok = modal.modalElem().querySelector('#ok');\n var field = modal.modalElem().querySelector('#field');\n var direction = modal.modalElem().querySelector('#direction');\n\n function preprocessPath(path) {\n return path === '' ? '@' : path[0] === '.' ? path.slice(1) : path;\n }\n\n paths.forEach(function (path) {\n var option = document.createElement('option');\n option.text = preprocessPath(path);\n option.value = path;\n field.appendChild(option);\n });\n\n function setDirection(value) {\n direction.value = value;\n direction.className = 'jsoneditor-button-group jsoneditor-button-group-value-' + direction.value;\n }\n\n field.value = selectedPath || paths[0];\n setDirection(selectedDirection || 'asc');\n\n direction.onclick = function (event) {\n setDirection(event.target.getAttribute('data-value'));\n };\n\n ok.onclick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n modal.close();\n onSort({\n path: field.value,\n direction: direction.value\n });\n };\n\n if (form) {\n // form is not available when JSONEditor is created inside a form\n form.onsubmit = ok.onclick;\n }\n }).afterClose(function (modal) {\n modal.destroy();\n }).show();\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"showTransformModal\", function() { return /* binding */ showTransformModal; });\n\n// EXTERNAL MODULE: ./node_modules/picomodal/src/picoModal.js\nvar picoModal = __webpack_require__(14);\nvar picoModal_default = /*#__PURE__*/__webpack_require__.n(picoModal);\n\n// EXTERNAL MODULE: ./src/js/assets/selectr/selectr.js\nvar selectr = __webpack_require__(10);\nvar selectr_default = /*#__PURE__*/__webpack_require__.n(selectr);\n\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./src/js/jsonUtils.js\n\n/**\n * Convert part of a JSON object to a JSON string.\n * Use case is to stringify a small part of a large JSON object so you can see\n * a preview.\n *\n * @param {*} value\n * The value to convert to a JSON string.\n *\n * @param {number | string | null} [space]\n * A String or Number object that's used to insert white space into the output\n * JSON string for readability purposes. If this is a Number, it indicates the\n * number of space characters to use as white space; this number is capped at 10\n * if it's larger than that. Values less than 1 indicate that no space should be\n * used. If this is a String, the string (or the first 10 characters of the string,\n * if it's longer than that) is used as white space. If this parameter is not\n * provided (or is null), no white space is used.\n *\n * @param {number} [limit] Maximum size of the string output.\n *\n * @returns {string | undefined} Returns the string representation of the JSON object.\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction stringifyPartial(value, space, limit) {\n var _space; // undefined by default\n\n\n if (typeof space === 'number') {\n if (space > 10) {\n _space = repeat(' ', 10);\n } else if (space >= 1) {\n _space = repeat(' ', space);\n } // else ignore\n\n } else if (typeof space === 'string' && space !== '') {\n _space = space;\n }\n\n var output = stringifyValue(value, _space, '', limit);\n return output.length > limit ? slice(output, limit) + '...' : output;\n}\n/**\n * Stringify a value\n * @param {*} value\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string | undefined}\n */\n\nfunction stringifyValue(value, space, indent, limit) {\n // boolean, null, number, string, or date\n if (typeof value === 'boolean' || value instanceof Boolean || value === null || typeof value === 'number' || value instanceof Number || typeof value === 'string' || value instanceof String || value instanceof Date) {\n return JSON.stringify(value);\n } // array\n\n\n if (Array.isArray(value)) {\n return stringifyArray(value, space, indent, limit);\n } // object (test lastly!)\n\n\n if (value && _typeof(value) === 'object') {\n return stringifyObject(value, space, indent, limit);\n }\n\n return undefined;\n}\n/**\n * Stringify an array\n * @param {Array} array\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string}\n */\n\n\nfunction stringifyArray(array, space, indent, limit) {\n var childIndent = space ? indent + space : undefined;\n var str = space ? '[\\n' : '[';\n\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n\n if (space) {\n str += childIndent;\n }\n\n if (typeof item !== 'undefined' && typeof item !== 'function') {\n str += stringifyValue(item, space, childIndent, limit);\n } else {\n str += 'null';\n }\n\n if (i < array.length - 1) {\n str += space ? ',\\n' : ',';\n } // stop as soon as we're exceeding the limit\n\n\n if (str.length > limit) {\n return str + '...';\n }\n }\n\n str += space ? '\\n' + indent + ']' : ']';\n return str;\n}\n/**\n * Stringify an object\n * @param {Object} object\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string}\n */\n\n\nfunction stringifyObject(object, space, indent, limit) {\n var childIndent = space ? indent + space : undefined;\n var first = true;\n var str = space ? '{\\n' : '{';\n\n if (typeof object.toJSON === 'function') {\n return stringifyValue(object.toJSON(), space, indent, limit);\n }\n\n for (var key in object) {\n if (jsonUtils_hasOwnProperty(object, key)) {\n var value = object[key];\n\n if (first) {\n first = false;\n } else {\n str += space ? ',\\n' : ',';\n }\n\n str += space ? childIndent + '\"' + key + '\": ' : '\"' + key + '\":';\n str += stringifyValue(value, space, childIndent, limit); // stop as soon as we're exceeding the limit\n\n if (str.length > limit) {\n return str + '...';\n }\n }\n }\n\n str += space ? '\\n' + indent + '}' : '}';\n return str;\n}\n/**\n * Repeat a string a number of times.\n * Simple linear solution, we only need up to 10 iterations in practice\n * @param {string} text\n * @param {number} times\n * @return {string}\n */\n\n\nfunction repeat(text, times) {\n var res = '';\n\n while (times-- > 0) {\n res += text;\n }\n\n return res;\n}\n/**\n * Limit the length of text\n * @param {string} text\n * @param {number} [limit]\n * @return {string}\n */\n\n\nfunction slice(text, limit) {\n return typeof limit === 'number' ? text.slice(0, limit) : text;\n}\n/**\n * Test whether some text contains a JSON array, i.e. the first\n * non-white space character is a [\n * @param {string} jsonText\n * @return {boolean}\n */\n\n\nfunction containsArray(jsonText) {\n return /^\\s*\\[/.test(jsonText);\n}\n\nfunction jsonUtils_hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(0);\n\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./src/js/showTransformModal.js\n\n\n\n\n\n\nvar DEFAULT_DESCRIPTION = 'Enter a <a href=\"http://jmespath.org\" target=\"_blank\">JMESPath</a> query to filter, sort, or transform the JSON data.<br/>' + 'To learn JMESPath, go to <a href=\"http://jmespath.org/tutorial.html\" target=\"_blank\">the interactive tutorial</a>.';\n/**\n * Show advanced filter and transform modal using JMESPath\n * @param {Object} params\n * @property {HTMLElement} container The container where to center\n * the modal and create an overlay\n * @property {JSON} json The json data to be transformed\n * @property {string} [queryDescription] Optional custom description explaining\n * the transform functionality\n * @property {function} createQuery Function called to create a query\n * from the wizard form\n * @property {function} executeQuery Execute a query for the preview pane\n * @property {function} onTransform Callback invoked with the created\n * query as callback\n */\n\nfunction showTransformModal(_ref) {\n var container = _ref.container,\n json = _ref.json,\n _ref$queryDescription = _ref.queryDescription,\n queryDescription = _ref$queryDescription === void 0 ? DEFAULT_DESCRIPTION : _ref$queryDescription,\n createQuery = _ref.createQuery,\n executeQuery = _ref.executeQuery,\n onTransform = _ref.onTransform;\n var value = json;\n var content = '<label class=\"pico-modal-contents\">' + '<div class=\"pico-modal-header\">' + Object(i18n[\"c\" /* translate */])('transform') + '</div>' + '<p>' + queryDescription + '</p>' + '<div class=\"jsoneditor-jmespath-label\">' + Object(i18n[\"c\" /* translate */])('transformWizardLabel') + ' </div>' + '<div id=\"wizard\" class=\"jsoneditor-jmespath-block jsoneditor-jmespath-wizard\">' + ' <table class=\"jsoneditor-jmespath-wizard-table\">' + ' <tbody>' + ' <tr>' + ' <th>' + Object(i18n[\"c\" /* translate */])('transformWizardFilter') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-field\" >' + ' <select id=\"filterField\">' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-relation\" >' + ' <select id=\"filterRelation\">' + ' <option value=\"==\">==</option>' + ' <option value=\"!=\">!=</option>' + ' <option value=\"<\">&lt;</option>' + ' <option value=\"<=\">&lt;=</option>' + ' <option value=\">\">&gt;</option>' + ' <option value=\">=\">&gt;=</option>' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-value\" >' + ' <input type=\"text\" class=\"value\" placeholder=\"value...\" id=\"filterValue\" />' + ' </div>' + ' </td>' + ' </tr>' + ' <tr>' + ' <th>' + Object(i18n[\"c\" /* translate */])('transformWizardSortBy') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-sort-field\">' + ' <select id=\"sortField\">' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-sort-order\" >' + ' <select id=\"sortOrder\">' + ' <option value=\"asc\">Ascending</option>' + ' <option value=\"desc\">Descending</option>' + ' </select>' + ' </div>' + ' </td>' + ' </tr>' + ' <tr id=\"selectFieldsPart\">' + ' <th>' + Object(i18n[\"c\" /* translate */])('transformWizardSelectFields') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <select class=\"jsoneditor-jmespath-select-fields\" id=\"selectFields\" multiple></select>' + ' </td>' + ' </tr>' + ' </tbody>' + ' </table>' + '</div>' + '<div class=\"jsoneditor-jmespath-label\">' + Object(i18n[\"c\" /* translate */])('transformQueryLabel') + ' </div>' + '<div class=\"jsoneditor-jmespath-block\">' + ' <textarea id=\"query\" ' + ' rows=\"4\" ' + ' autocomplete=\"off\" ' + ' autocorrect=\"off\" ' + ' autocapitalize=\"off\" ' + ' spellcheck=\"false\"' + ' title=\"' + Object(i18n[\"c\" /* translate */])('transformQueryTitle') + '\">[*]</textarea>' + '</div>' + '<div class=\"jsoneditor-jmespath-label\">' + Object(i18n[\"c\" /* translate */])('transformPreviewLabel') + ' </div>' + '<div class=\"jsoneditor-jmespath-block\">' + ' <textarea id=\"preview\" ' + ' class=\"jsoneditor-transform-preview\"' + ' readonly> </textarea>' + '</div>' + '<div class=\"jsoneditor-jmespath-block jsoneditor-modal-actions\">' + ' <input type=\"submit\" id=\"ok\" value=\"' + Object(i18n[\"c\" /* translate */])('ok') + '\" autofocus />' + '</div>' + '</div>';\n picoModal_default()({\n parent: container,\n content: content,\n overlayClass: 'jsoneditor-modal-overlay',\n overlayStyles: {\n backgroundColor: 'rgb(1,1,1)',\n opacity: 0.3\n },\n modalClass: 'jsoneditor-modal jsoneditor-modal-transform',\n focus: false\n }).afterCreate(function (modal) {\n var elem = modal.modalElem();\n var wizard = elem.querySelector('#wizard');\n var ok = elem.querySelector('#ok');\n var filterField = elem.querySelector('#filterField');\n var filterRelation = elem.querySelector('#filterRelation');\n var filterValue = elem.querySelector('#filterValue');\n var sortField = elem.querySelector('#sortField');\n var sortOrder = elem.querySelector('#sortOrder');\n var selectFields = elem.querySelector('#selectFields');\n var query = elem.querySelector('#query');\n var preview = elem.querySelector('#preview');\n\n if (!Array.isArray(value)) {\n wizard.style.fontStyle = 'italic';\n wizard.textContent = '(wizard not available for objects, only for arrays)';\n }\n\n var sortablePaths = Object(util[\"getChildPaths\"])(json);\n sortablePaths.forEach(function (path) {\n var formattedPath = preprocessPath(path);\n var filterOption = document.createElement('option');\n filterOption.text = formattedPath;\n filterOption.value = formattedPath;\n filterField.appendChild(filterOption);\n var sortOption = document.createElement('option');\n sortOption.text = formattedPath;\n sortOption.value = formattedPath;\n sortField.appendChild(sortOption);\n });\n var selectablePaths = Object(util[\"getChildPaths\"])(json, true).filter(function (path) {\n return path !== '';\n });\n\n if (selectablePaths.length > 0) {\n selectablePaths.forEach(function (path) {\n var formattedPath = preprocessPath(path);\n var option = document.createElement('option');\n option.text = formattedPath;\n option.value = formattedPath;\n selectFields.appendChild(option);\n });\n } else {\n var selectFieldsPart = elem.querySelector('#selectFieldsPart');\n\n if (selectFieldsPart) {\n selectFieldsPart.style.display = 'none';\n }\n }\n\n var selectrFilterField = new selectr_default.a(filterField, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'field...'\n });\n var selectrFilterRelation = new selectr_default.a(filterRelation, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'compare...'\n });\n var selectrSortField = new selectr_default.a(sortField, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'field...'\n });\n var selectrSortOrder = new selectr_default.a(sortOrder, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'order...'\n });\n var selectrSelectFields = new selectr_default.a(selectFields, {\n multiple: true,\n clearable: true,\n defaultSelected: false,\n placeholder: 'select fields...'\n });\n selectrFilterField.on('selectr.change', generateQueryFromWizard);\n selectrFilterRelation.on('selectr.change', generateQueryFromWizard);\n filterValue.oninput = generateQueryFromWizard;\n selectrSortField.on('selectr.change', generateQueryFromWizard);\n selectrSortOrder.on('selectr.change', generateQueryFromWizard);\n selectrSelectFields.on('selectr.change', generateQueryFromWizard);\n\n elem.querySelector('.pico-modal-contents').onclick = function (event) {\n // prevent the first clear button (in any select box) from getting\n // focus when clicking anywhere in the modal. Only allow clicking links.\n if (event.target.nodeName !== 'A') {\n event.preventDefault();\n }\n };\n\n function preprocessPath(path) {\n return path === '' ? '@' : path[0] === '.' ? path.slice(1) : path;\n }\n\n function updatePreview() {\n try {\n var transformed = executeQuery(value, query.value);\n preview.className = 'jsoneditor-transform-preview';\n preview.value = stringifyPartial(transformed, 2, constants[\"b\" /* MAX_PREVIEW_CHARACTERS */]);\n ok.disabled = false;\n } catch (err) {\n preview.className = 'jsoneditor-transform-preview jsoneditor-error';\n preview.value = err.toString();\n ok.disabled = true;\n }\n }\n\n var debouncedUpdatePreview = Object(util[\"debounce\"])(updatePreview, 300);\n\n function tryCreateQuery(json, queryOptions) {\n try {\n query.value = createQuery(json, queryOptions);\n ok.disabled = false;\n debouncedUpdatePreview();\n } catch (err) {\n var message = 'Error: an error happened when executing \"createQuery\": ' + (err.message || err.toString());\n query.value = '';\n ok.disabled = true;\n preview.className = 'jsoneditor-transform-preview jsoneditor-error';\n preview.value = message;\n }\n }\n\n function generateQueryFromWizard() {\n var queryOptions = {};\n\n if (filterField.value && filterRelation.value && filterValue.value) {\n queryOptions.filter = {\n field: filterField.value,\n relation: filterRelation.value,\n value: filterValue.value\n };\n }\n\n if (sortField.value && sortOrder.value) {\n queryOptions.sort = {\n field: sortField.value,\n direction: sortOrder.value\n };\n }\n\n if (selectFields.value) {\n var fields = [];\n\n for (var i = 0; i < selectFields.options.length; i++) {\n if (selectFields.options[i].selected) {\n var selectedField = selectFields.options[i].value;\n fields.push(selectedField);\n }\n }\n\n queryOptions.projection = {\n fields: fields\n };\n }\n\n tryCreateQuery(json, queryOptions);\n }\n\n query.oninput = debouncedUpdatePreview;\n\n ok.onclick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n modal.close();\n onTransform(query.value);\n }; // initialize with empty query\n\n\n tryCreateQuery(json, {});\n setTimeout(function () {\n query.select();\n query.focus();\n query.selectionStart = 3;\n query.selectionEnd = 3;\n });\n }).afterClose(function (modal) {\n modal.destroy();\n }).show();\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(n,e){ true?module.exports=e():undefined}(this,function(){\"use strict\";var r,t,n=(r=function(n,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,e){n.__proto__=e}||function(n,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])})(n,e)},function(n,e){function t(){this.constructor=n}r(n,e),n.prototype=null===e?Object.create(e):(t.prototype=e.prototype,new t)}),i=(t=SyntaxError,n(e,t),e);function e(n,e){n=t.call(this,n+\" (char \"+e+\")\")||this;return n.char=e,n}var f=[\"'\",\"‘\",\"’\",\"`\",\"´\"],o=['\"',\"“\",\"”\"];function u(n){return/^[a-zA-Z_]$/.test(n)}function c(n){return\"0\"<=n&&n<=\"9\"}function l(n){return\" \"===n||\"\\t\"===n||\"\\n\"===n||\"\\r\"===n}function s(n){return\" \"===n||\" \"<=n&&n<=\" \"||\" \"===n||\" \"===n||\" \"===n}function a(n){return f.includes(n)?\"'\":o.includes(n)?'\"':n}function d(n,e){e=n.lastIndexOf(e);return-1!==e?n.substring(0,e)+n.substring(e+1):n}function h(n,e){return n.replace(/\\s*$/,function(n){return e+n})}var p=0,b=1,w=2,g=3,v=4,x=5,y=6,_={\"\":!0,\"{\":!0,\"}\":!0,\"[\":!0,\"]\":!0,\":\":!0,\",\":!0,\"(\":!0,\")\":!0,\";\":!0,\"+\":!0},O={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"},m={\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\"},I={null:\"null\",true:\"true\",false:\"false\"},j={None:\"null\",True:\"true\",False:\"false\"},k=\"\",A=\"\",$=0,E=\"\",T=\"\",F=y;function P(){$++,E=k.charAt($)}function S(){return F===p&&(\"[\"===T||\"{\"===T)||F===w||F===b||F===g}function U(){A+=T,F=y,T=\"\",function(){if(_[E])return F=p,T=E,P();!function(){if(c(E)||\"-\"===E){if(F=b,\"-\"===E){if(T+=E,P(),!c(E))throw new i(\"Invalid number, digit expected\",$)}else\"0\"===E&&(T+=E,P());for(;c(E);)T+=E,P();if(\".\"===E){if(T+=E,P(),!c(E))throw new i(\"Invalid number, digit expected\",$);for(;c(E);)T+=E,P()}if(\"e\"===E||\"E\"===E){if(T+=E,P(),\"+\"!==E&&\"-\"!==E||(T+=E,P()),!c(E))throw new i(\"Invalid number, digit expected\",$);for(;c(E);)T+=E,P()}return}!function(){if(function(n){return f.includes(n)||o.includes(n)}(E)){var n=a(E);for(T+='\"',F=w,P();\"\"!==E&&a(E)!==n;)if(\"\\\\\"===E)if(P(),void 0!==O[E])T+=\"\\\\\"+E,P();else if(\"u\"===E){T+=\"\\\\u\",P();for(var e=0;e<4;e++){if(!/^[0-9a-fA-F]$/.test(E))throw new i(\"Invalid unicode character\",$-T.length);T+=E,P()}}else{if(\"'\"!==E)throw new i('Invalid escape character \"\\\\'+E+'\"',$);T+=\"'\",P()}else m[E]?T+=m[E]:T+='\"'===E?'\\\\\"':E,P();if(a(E)!==n)throw new i(\"End of string expected\",$-T.length);return T+='\"',P()}!function(){if(u(E)){for(F=g;u(E)||c(E)||\"$\"===E;)T+=E,P();return}!function(){if(l(E)||s(E)){for(F=v;l(E)||s(E);)T+=E,P();return}!function(){if(\"/\"===E&&\"*\"===k[$+1]){for(F=x;\"\"!==E&&(\"*\"!==E||\"*\"===E&&\"/\"!==k[$+1]);)T+=E,P();return\"*\"===E&&\"/\"===k[$+1]&&(T+=E,P(),T+=E,P())}if(\"/\"===E&&\"/\"===k[$+1]){for(F=x;\"\"!==E&&\"\\n\"!==E;)T+=E,P();return}!function(){F=y;for(;\"\"!==E;)T+=E,P();throw new i('Syntax error in part \"'+T+'\"',$-T.length)}()}()}()}()}()}()}(),F===v&&(T=function(n){for(var e=\"\",t=0;t<n.length;t++){var r=n[t];e+=s(r)?\" \":r}return e}(T),U()),F===x&&(F=y,T=\"\",U())}function z(){if(F!==p||\"{\"!==T)!function(){if(F===p&&\"[\"===T){if(U(),F===p&&\"]\"===T)return U();for(;;)if(z(),F===p&&\",\"===T){if(U(),F===p&&\"]\"===T){A=d(A,\",\");break}}else{if(!S())break;A=h(A,\",\")}return F===p&&\"]\"===T?U():A=h(A,\"]\")}!function(){if(F===w){for(U();F===p&&\"+\"===T;){var n;T=\"\",U(),F===w&&(n=A.lastIndexOf('\"'),A=A.substring(0,n)+T.substring(1),T=\"\",U())}return}!function(){if(F===b)return U();!function(){if(F===g){if(I[T])return U();if(j[T])return T=j[T],U();var n=T,e=A.length;if(T=\"\",U(),F===p&&\"(\"===T)return T=\"\",U(),z(),F===p&&\")\"===T&&(T=\"\",U(),F===p&&\";\"===T&&(T=\"\",U()));for(A=function(n,e,t){return n.substring(0,t)+e+n.substring(t)}(A,'\"'+n,e);F===g||F===b;)U();return A+='\"'}!function(){throw new i(\"\"===T?\"Unexpected end of json string\":\"Value expected\",$-T.length)}()}()}()}()}();else if(U(),F!==p||\"}\"!==T){for(;;){if(F!==g&&F!==b||(F=w,T='\"'+T+'\"'),F!==w)throw new i(\"Object key expected\",$-T.length);if(U(),F===p&&\":\"===T)U();else{if(!S())throw new i(\"Colon expected\",$-T.length);A=h(A,\":\")}if(z(),F===p&&\",\"===T){if(U(),F===p&&\"}\"===T){A=d(A,\",\");break}}else{if(F!==w&&F!==b&&F!==g)break;A=h(A,\",\")}}F===p&&\"}\"===T?U():A=h(A,\"}\")}else U()}return function(n){if(A=\"\",$=0,E=(k=n).charAt(0),T=\"\",F=y,U(),n=F===p&&\"{\"===T,z(),\"\"===T)return A;if(n&&S()){for(;S();)A=h(A,\",\"),z();return\"[\\n\"+A+\"\\n]\"}throw new i(\"Unexpected characters\",$-T.length)}});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FocusTracker; });\n\n/**\n * @constructor FocusTracker\n * A custom focus tracker for a DOM element with complex internal DOM structure\n * @param {[Object]} config A set of configurations for the FocusTracker\n * {DOM Object} target * The DOM object to track (required)\n * {Function} onFocus onFocus callback\n * {Function} onBlur onBlur callback\n *\n * @return\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar FocusTracker = /*#__PURE__*/function () {\n function FocusTracker(config) {\n _classCallCheck(this, FocusTracker);\n\n this.target = config.target || null;\n\n if (!this.target) {\n throw new Error('FocusTracker constructor called without a \"target\" to track.');\n }\n\n this.onFocus = typeof config.onFocus === 'function' ? config.onFocus : null;\n this.onBlur = typeof config.onBlur === 'function' ? config.onBlur : null;\n this._onClick = this._onEvent.bind(this);\n\n this._onKeyUp = function (event) {\n if (event.which === 9 || event.keyCode === 9) {\n this._onEvent(event);\n }\n }.bind(this);\n\n this.focusFlag = false;\n this.firstEventFlag = true;\n /*\n Adds required (click and keyup) event listeners to the 'document' object\n to track the focus of the given 'target'\n */\n\n if (this.onFocus || this.onBlur) {\n document.addEventListener('click', this._onClick);\n document.addEventListener('keyup', this._onKeyUp);\n }\n }\n /**\n * Removes the event listeners on the 'document' object\n * that were added to track the focus of the given 'target'\n */\n\n\n _createClass(FocusTracker, [{\n key: \"destroy\",\n value: function destroy() {\n document.removeEventListener('click', this._onClick);\n document.removeEventListener('keyup', this._onKeyUp);\n\n this._onEvent({\n target: document.body\n }); // calling _onEvent with body element in the hope that the FocusTracker is added to an element inside the body tag\n\n }\n /**\n * Tracks the focus of the target and calls the onFocus and onBlur\n * event callbacks if available.\n * @param {Event} [event] The 'click' or 'keyup' event object,\n * from the respective events set on\n * document object\n * @private\n */\n\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event) {\n var target = event.target;\n var focusFlag;\n\n if (target === this.target) {\n focusFlag = true;\n } else if (this.target.contains(target) || this.target.contains(document.activeElement)) {\n focusFlag = true;\n } else {\n focusFlag = false;\n }\n\n if (focusFlag) {\n if (!this.focusFlag) {\n // trigger the onFocus callback\n if (this.onFocus) {\n this.onFocus({\n type: 'focus',\n target: this.target\n });\n }\n\n this.focusFlag = true;\n }\n } else {\n if (this.focusFlag || this.firstEventFlag) {\n // trigger the onBlur callback\n if (this.onBlur) {\n this.onBlur({\n type: 'blur',\n target: this.target\n });\n }\n\n this.focusFlag = false;\n /*\n When switching from one mode to another in the editor, the FocusTracker gets recreated.\n At that time, this.focusFlag will be init to 'false' and will fail the above if condition, when blur occurs\n this.firstEventFlag is added to overcome that issue\n */\n\n if (this.firstEventFlag) {\n this.firstEventFlag = false;\n }\n }\n }\n }\n }]);\n\n return FocusTracker;\n}();\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ModeSwitcher; });\n/* harmony import */ var _ContextMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n/**\n * Create a select box to be used in the editor menu's, which allows to switch mode\n * @param {HTMLElement} container\n * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view', 'preview'\n * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view', 'preview'\n * @param {function(mode: string)} onSwitch Callback invoked on switch\n * @constructor\n */\n\nvar ModeSwitcher = /*#__PURE__*/function () {\n function ModeSwitcher(container, modes, current, onSwitch) {\n _classCallCheck(this, ModeSwitcher);\n\n // available modes\n var availableModes = {\n code: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeCodeText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeCodeTitle'),\n click: function click() {\n onSwitch('code');\n }\n },\n form: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeFormText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeFormTitle'),\n click: function click() {\n onSwitch('form');\n }\n },\n text: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeTextText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeTextTitle'),\n click: function click() {\n onSwitch('text');\n }\n },\n tree: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeTreeText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeTreeTitle'),\n click: function click() {\n onSwitch('tree');\n }\n },\n view: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeViewText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeViewTitle'),\n click: function click() {\n onSwitch('view');\n }\n },\n preview: {\n text: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modePreviewText'),\n title: Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modePreviewTitle'),\n click: function click() {\n onSwitch('preview');\n }\n }\n }; // list the selected modes\n\n var items = [];\n\n for (var i = 0; i < modes.length; i++) {\n var mode = modes[i];\n var item = availableModes[mode];\n\n if (!item) {\n throw new Error('Unknown mode \"' + mode + '\"');\n }\n\n item.className = 'jsoneditor-type-modes' + (current === mode ? ' jsoneditor-selected' : '');\n items.push(item);\n } // retrieve the title of current mode\n\n\n var currentMode = availableModes[current];\n\n if (!currentMode) {\n throw new Error('Unknown mode \"' + current + '\"');\n }\n\n var currentTitle = currentMode.text; // create the html element\n\n var box = document.createElement('button');\n box.type = 'button';\n box.className = 'jsoneditor-modes jsoneditor-separator';\n box.textContent = currentTitle + \" \\u25BE\";\n box.title = Object(_i18n__WEBPACK_IMPORTED_MODULE_1__[/* translate */ \"c\"])('modeEditorTitle');\n\n box.onclick = function () {\n var menu = new _ContextMenu__WEBPACK_IMPORTED_MODULE_0__[/* ContextMenu */ \"a\"](items);\n menu.show(box, container);\n };\n\n var frame = document.createElement('div');\n frame.className = 'jsoneditor-modes';\n frame.style.position = 'relative';\n frame.appendChild(box);\n container.appendChild(frame);\n this.dom = {\n container: container,\n box: box,\n frame: frame\n };\n }\n /**\n * Set focus to switcher\n */\n\n\n _createClass(ModeSwitcher, [{\n key: \"focus\",\n value: function focus() {\n this.dom.box.focus();\n }\n /**\n * Destroy the ModeSwitcher, remove from DOM\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.dom && this.dom.frame && this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n\n this.dom = null;\n }\n }]);\n\n return ModeSwitcher;\n}();\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Selectr 2.4.0\n * https://github.com/Mobius1/Selectr\n *\n * Released under the MIT license\n */\n\n/**\n * Default configuration options\n * @type {Object}\n */\n\nvar defaultConfig = {\n /**\n * Emulates browser behaviour by selecting the first option by default\n * @type {Boolean}\n */\n defaultSelected: true,\n\n /**\n * Sets the width of the container\n * @type {String}\n */\n width: \"auto\",\n\n /**\n * Enables/ disables the container\n * @type {Boolean}\n */\n disabled: false,\n\n /**\n * Enables / disables the search function\n * @type {Boolean}\n */\n searchable: true,\n\n /**\n * Enable disable the clear button\n * @type {Boolean}\n */\n clearable: false,\n\n /**\n * Sort the tags / multiselect options\n * @type {Boolean}\n */\n sortSelected: false,\n\n /**\n * Allow deselecting of select-one options\n * @type {Boolean}\n */\n allowDeselect: false,\n\n /**\n * Close the dropdown when scrolling (@AlexanderReiswich, #11)\n * @type {Boolean}\n */\n closeOnScroll: false,\n\n /**\n * Allow the use of the native dropdown (@jonnyscholes, #14)\n * @type {Boolean}\n */\n nativeDropdown: false,\n\n /**\n * Set the main placeholder\n * @type {String}\n */\n placeholder: \"Select an option...\",\n\n /**\n * Allow the tagging feature\n * @type {Boolean}\n */\n taggable: false,\n\n /**\n * Set the tag input placeholder (@labikmartin, #21, #22)\n * @type {String}\n */\n tagPlaceholder: \"Enter a tag...\"\n};\n/**\n * Event Emitter\n */\n\nvar Events = function Events() {};\n/**\n * Event Prototype\n * @type {Object}\n */\n\n\nEvents.prototype = {\n /**\n * Add custom event listener\n * @param {String} event Event type\n * @param {Function} func Callback\n * @return {Void}\n */\n on: function on(event, func) {\n this._events = this._events || {};\n this._events[event] = this._events[event] || [];\n\n this._events[event].push(func);\n },\n\n /**\n * Remove custom event listener\n * @param {String} event Event type\n * @param {Function} func Callback\n * @return {Void}\n */\n off: function off(event, func) {\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n this._events[event].splice(this._events[event].indexOf(func), 1);\n },\n\n /**\n * Fire a custom event\n * @param {String} event Event type\n * @return {Void}\n */\n emit: function emit(event\n /* , args... */\n ) {\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n for (var i = 0; i < this._events[event].length; i++) {\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }\n};\n/**\n * Event mixin\n * @param {Object} obj\n * @return {Object}\n */\n\nEvents.mixin = function (obj) {\n var props = ['on', 'off', 'emit'];\n\n for (var i = 0; i < props.length; i++) {\n if (typeof obj === 'function') {\n obj.prototype[props[i]] = Events.prototype[props[i]];\n } else {\n obj[props[i]] = Events.prototype[props[i]];\n }\n }\n\n return obj;\n};\n/**\n * Helpers\n * @type {Object}\n */\n\n\nvar util = {\n extend: function extend(src, props) {\n props = props || {};\n var p;\n\n for (p in src) {\n if (src.hasOwnProperty(p)) {\n if (!props.hasOwnProperty(p)) {\n props[p] = src[p];\n }\n }\n }\n\n return props;\n },\n each: function each(a, b, c) {\n if (\"[object Object]\" === Object.prototype.toString.call(a)) {\n for (var d in a) {\n if (Object.prototype.hasOwnProperty.call(a, d)) {\n b.call(c, d, a[d], a);\n }\n }\n } else {\n for (var e = 0, f = a.length; e < f; e++) {\n b.call(c, e, a[e], a);\n }\n }\n },\n createElement: function createElement(e, a) {\n var d = document,\n el = d.createElement(e);\n\n if (a && \"[object Object]\" === Object.prototype.toString.call(a)) {\n var i;\n\n for (i in a) {\n if (i in el) el[i] = a[i];else if (\"html\" === i) el.textContent = a[i];else if (\"text\" === i) {\n var t = d.createTextNode(a[i]);\n el.appendChild(t);\n } else el.setAttribute(i, a[i]);\n }\n }\n\n return el;\n },\n hasClass: function hasClass(a, b) {\n if (a) return a.classList ? a.classList.contains(b) : !!a.className && !!a.className.match(new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\"));\n },\n addClass: function addClass(a, b) {\n if (!util.hasClass(a, b)) {\n if (a.classList) {\n a.classList.add(b);\n } else {\n a.className = a.className.trim() + \" \" + b;\n }\n }\n },\n removeClass: function removeClass(a, b) {\n if (util.hasClass(a, b)) {\n if (a.classList) {\n a.classList.remove(b);\n } else {\n a.className = a.className.replace(new RegExp(\"(^|\\\\s)\" + b.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\n }\n }\n },\n closest: function closest(el, fn) {\n return el && el !== document.body && (fn(el) ? el : util.closest(el.parentNode, fn));\n },\n isInt: function isInt(val) {\n return typeof val === 'number' && isFinite(val) && Math.floor(val) === val;\n },\n debounce: function debounce(a, b, c) {\n var d;\n return function () {\n var e = this,\n f = arguments,\n g = function g() {\n d = null;\n if (!c) a.apply(e, f);\n },\n h = c && !d;\n\n clearTimeout(d);\n d = setTimeout(g, b);\n\n if (h) {\n a.apply(e, f);\n }\n };\n },\n rect: function rect(el, abs) {\n var w = window;\n var r = el.getBoundingClientRect();\n var x = abs ? w.pageXOffset : 0;\n var y = abs ? w.pageYOffset : 0;\n return {\n bottom: r.bottom + y,\n height: r.height,\n left: r.left + x,\n right: r.right + x,\n top: r.top + y,\n width: r.width\n };\n },\n includes: function includes(a, b) {\n return a.indexOf(b) > -1;\n },\n truncate: function truncate(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n};\n\nfunction isset(obj, prop) {\n return obj.hasOwnProperty(prop) && (obj[prop] === true || obj[prop].length);\n}\n/**\n * Append an item to the list\n * @param {Object} item\n * @param {Object} custom\n * @return {Void}\n */\n\n\nfunction appendItem(item, parent, custom) {\n if (item.parentNode) {\n if (!item.parentNode.parentNode) {\n parent.appendChild(item.parentNode);\n }\n } else {\n parent.appendChild(item);\n }\n\n util.removeClass(item, \"excluded\");\n\n if (!custom) {\n item.textContent = item.textContent + ''; // clear highlighting\n }\n}\n/**\n * Render the item list\n * @return {Void}\n */\n\n\nvar render = function render() {\n if (this.items.length) {\n var f = document.createDocumentFragment();\n\n if (this.config.pagination) {\n var pages = this.pages.slice(0, this.pageIndex);\n util.each(pages, function (i, items) {\n util.each(items, function (j, item) {\n appendItem(item, f, this.customOption);\n }, this);\n }, this);\n } else {\n util.each(this.items, function (i, item) {\n appendItem(item, f, this.customOption);\n }, this);\n }\n\n if (f.childElementCount) {\n util.removeClass(this.items[this.navIndex], \"active\");\n this.navIndex = f.querySelector(\".selectr-option\").idx;\n util.addClass(this.items[this.navIndex], \"active\");\n }\n\n this.tree.appendChild(f);\n }\n};\n/**\n * Dismiss / close the dropdown\n * @param {obj} e\n * @return {void}\n */\n\n\nvar dismiss = function dismiss(e) {\n var target = e.target;\n\n if (!this.container.contains(target) && (this.opened || util.hasClass(this.container, \"notice\"))) {\n this.close();\n }\n};\n/**\n * Build a list item from the HTMLOptionElement\n * @param {int} i HTMLOptionElement index\n * @param {HTMLOptionElement} option\n * @param {bool} group Has parent optgroup\n * @return {void}\n */\n\n\nvar createItem = function createItem(option, data) {\n data = data || option;\n var content = this.customOption ? this.config.renderOption(data) : option.textContent;\n var opt = util.createElement(\"li\", {\n \"class\": \"selectr-option\",\n html: content,\n role: \"treeitem\",\n \"aria-selected\": false\n });\n opt.idx = option.idx;\n this.items.push(opt);\n\n if (option.defaultSelected) {\n this.defaultSelected.push(option.idx);\n }\n\n if (option.disabled) {\n opt.disabled = true;\n util.addClass(opt, \"disabled\");\n }\n\n return opt;\n};\n/**\n * Build the container\n * @return {Void}\n */\n\n\nvar build = function build() {\n this.requiresPagination = this.config.pagination && this.config.pagination > 0; // Set width\n\n if (isset(this.config, \"width\")) {\n if (util.isInt(this.config.width)) {\n this.width = this.config.width + \"px\";\n } else {\n if (this.config.width === \"auto\") {\n this.width = \"100%\";\n } else if (util.includes(this.config.width, \"%\")) {\n this.width = this.config.width;\n }\n }\n }\n\n this.container = util.createElement(\"div\", {\n \"class\": \"selectr-container\"\n }); // Custom className\n\n if (this.config.customClass) {\n util.addClass(this.container, this.config.customClass);\n } // Mobile device\n\n\n if (this.mobileDevice) {\n util.addClass(this.container, \"selectr-mobile\");\n } else {\n util.addClass(this.container, \"selectr-desktop\");\n } // Hide the HTMLSelectElement and prevent focus\n\n\n this.el.tabIndex = -1; // Native dropdown\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n util.addClass(this.el, \"selectr-visible\");\n } else {\n util.addClass(this.el, \"selectr-hidden\");\n }\n\n this.selected = util.createElement(\"div\", {\n \"class\": \"selectr-selected\",\n disabled: this.disabled,\n tabIndex: 1,\n // enable tabIndex (#9)\n \"aria-expanded\": false\n });\n this.label = util.createElement(this.el.multiple ? \"ul\" : \"span\", {\n \"class\": \"selectr-label\"\n });\n var dropdown = util.createElement(\"div\", {\n \"class\": \"selectr-options-container\"\n });\n this.tree = util.createElement(\"ul\", {\n \"class\": \"selectr-options\",\n role: \"tree\",\n \"aria-hidden\": true,\n \"aria-expanded\": false\n });\n this.notice = util.createElement(\"div\", {\n \"class\": \"selectr-notice\"\n });\n this.el.setAttribute(\"aria-hidden\", true);\n\n if (this.disabled) {\n this.el.disabled = true;\n }\n\n if (this.el.multiple) {\n util.addClass(this.label, \"selectr-tags\");\n util.addClass(this.container, \"multiple\"); // Collection of tags\n\n this.tags = []; // Collection of selected values\n\n this.selectedValues = this.getSelectedProperties('value'); // Collection of selected indexes\n\n this.selectedIndexes = this.getSelectedProperties('idx');\n }\n\n this.selected.appendChild(this.label);\n\n if (this.config.clearable) {\n this.selectClear = util.createElement(\"button\", {\n \"class\": \"selectr-clear\",\n type: \"button\"\n });\n this.container.appendChild(this.selectClear);\n util.addClass(this.container, \"clearable\");\n }\n\n if (this.config.taggable) {\n var li = util.createElement('li', {\n \"class\": 'input-tag'\n });\n this.input = util.createElement(\"input\", {\n \"class\": \"selectr-tag-input\",\n placeholder: this.config.tagPlaceholder,\n tagIndex: 0,\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\",\n role: \"textbox\",\n type: \"search\"\n });\n li.appendChild(this.input);\n this.label.appendChild(li);\n util.addClass(this.container, \"taggable\");\n this.tagSeperators = [\",\"];\n\n if (this.config.tagSeperators) {\n this.tagSeperators = this.tagSeperators.concat(this.config.tagSeperators);\n }\n }\n\n if (this.config.searchable) {\n this.input = util.createElement(\"input\", {\n \"class\": \"selectr-input\",\n tagIndex: -1,\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\",\n role: \"textbox\",\n type: \"search\"\n });\n this.inputClear = util.createElement(\"button\", {\n \"class\": \"selectr-input-clear\",\n type: \"button\"\n });\n this.inputContainer = util.createElement(\"div\", {\n \"class\": \"selectr-input-container\"\n });\n this.inputContainer.appendChild(this.input);\n this.inputContainer.appendChild(this.inputClear);\n dropdown.appendChild(this.inputContainer);\n }\n\n dropdown.appendChild(this.notice);\n dropdown.appendChild(this.tree); // List of items for the dropdown\n\n this.items = []; // Establish options\n\n this.options = []; // Check for options in the element\n\n if (this.el.options.length) {\n this.options = [].slice.call(this.el.options);\n } // Element may have optgroups so\n // iterate element.children instead of element.options\n\n\n var group = false,\n j = 0;\n\n if (this.el.children.length) {\n util.each(this.el.children, function (i, element) {\n if (element.nodeName === \"OPTGROUP\") {\n group = util.createElement(\"ul\", {\n \"class\": \"selectr-optgroup\",\n role: \"group\",\n html: \"<li class='selectr-optgroup--label'>\" + element.label + \"</li>\"\n });\n util.each(element.children, function (x, el) {\n el.idx = j;\n group.appendChild(createItem.call(this, el, group));\n j++;\n }, this);\n } else {\n element.idx = j;\n createItem.call(this, element);\n j++;\n }\n }, this);\n } // Options defined by the data option\n\n\n if (this.config.data && Array.isArray(this.config.data)) {\n this.data = [];\n var optgroup = false,\n option;\n group = false;\n j = 0;\n util.each(this.config.data, function (i, opt) {\n // Check for group options\n if (isset(opt, \"children\")) {\n optgroup = util.createElement(\"optgroup\", {\n label: opt.text\n });\n group = util.createElement(\"ul\", {\n \"class\": \"selectr-optgroup\",\n role: \"group\",\n html: \"<li class='selectr-optgroup--label'>\" + opt.text + \"</li>\"\n });\n util.each(opt.children, function (x, data) {\n option = new Option(data.text, data.value, false, data.hasOwnProperty(\"selected\") && data.selected === true);\n option.disabled = isset(data, \"disabled\");\n this.options.push(option);\n optgroup.appendChild(option);\n option.idx = j;\n group.appendChild(createItem.call(this, option, data));\n this.data[j] = data;\n j++;\n }, this);\n } else {\n option = new Option(opt.text, opt.value, false, opt.hasOwnProperty(\"selected\") && opt.selected === true);\n option.disabled = isset(opt, \"disabled\");\n this.options.push(option);\n option.idx = j;\n createItem.call(this, option, opt);\n this.data[j] = opt;\n j++;\n }\n }, this);\n }\n\n this.setSelected(true);\n var first;\n this.navIndex = 0;\n\n for (var i = 0; i < this.items.length; i++) {\n first = this.items[i];\n\n if (!util.hasClass(first, \"disabled\")) {\n util.addClass(first, \"active\");\n this.navIndex = i;\n break;\n }\n } // Check for pagination / infinite scroll\n\n\n if (this.requiresPagination) {\n this.pageIndex = 1; // Create the pages\n\n this.paginate();\n }\n\n this.container.appendChild(this.selected);\n this.container.appendChild(dropdown);\n this.placeEl = util.createElement(\"div\", {\n \"class\": \"selectr-placeholder\"\n }); // Set the placeholder\n\n this.setPlaceholder();\n this.selected.appendChild(this.placeEl); // Disable if required\n\n if (this.disabled) {\n this.disable();\n }\n\n this.el.parentNode.insertBefore(this.container, this.el);\n this.container.appendChild(this.el);\n};\n/**\n * Navigate through the dropdown\n * @param {obj} e\n * @return {void}\n */\n\n\nvar navigate = function navigate(e) {\n e = e || window.event; // Filter out the keys we don\"t want\n\n if (!this.items.length || !this.opened || !util.includes([13, 38, 40], e.which)) {\n this.navigating = false;\n return;\n }\n\n e.preventDefault();\n\n if (e.which === 13) {\n if (this.config.taggable && this.input.value.length > 0) {\n return false;\n }\n\n return this.change(this.navIndex);\n }\n\n var direction,\n prevEl = this.items[this.navIndex];\n\n switch (e.which) {\n case 38:\n direction = 0;\n\n if (this.navIndex > 0) {\n this.navIndex--;\n }\n\n break;\n\n case 40:\n direction = 1;\n\n if (this.navIndex < this.items.length - 1) {\n this.navIndex++;\n }\n\n }\n\n this.navigating = true; // Instead of wasting memory holding a copy of this.items\n // with disabled / excluded options omitted, skip them instead\n\n while (util.hasClass(this.items[this.navIndex], \"disabled\") || util.hasClass(this.items[this.navIndex], \"excluded\")) {\n if (direction) {\n this.navIndex++;\n } else {\n this.navIndex--;\n }\n\n if (this.searching) {\n if (this.navIndex > this.tree.lastElementChild.idx) {\n this.navIndex = this.tree.lastElementChild.idx;\n break;\n } else if (this.navIndex < this.tree.firstElementChild.idx) {\n this.navIndex = this.tree.firstElementChild.idx;\n break;\n }\n }\n } // Autoscroll the dropdown during navigation\n\n\n var r = util.rect(this.items[this.navIndex]);\n\n if (!direction) {\n if (this.navIndex === 0) {\n this.tree.scrollTop = 0;\n } else if (r.top - this.optsRect.top < 0) {\n this.tree.scrollTop = this.tree.scrollTop + (r.top - this.optsRect.top);\n }\n } else {\n if (this.navIndex === 0) {\n this.tree.scrollTop = 0;\n } else if (r.top + r.height > this.optsRect.top + this.optsRect.height) {\n this.tree.scrollTop = this.tree.scrollTop + (r.top + r.height - (this.optsRect.top + this.optsRect.height));\n } // Load another page if needed\n\n\n if (this.navIndex === this.tree.childElementCount - 1 && this.requiresPagination) {\n load.call(this);\n }\n }\n\n if (prevEl) {\n util.removeClass(prevEl, \"active\");\n }\n\n util.addClass(this.items[this.navIndex], \"active\");\n};\n/**\n * Add a tag\n * @param {HTMLElement} item\n */\n\n\nvar addTag = function addTag(item) {\n var that = this,\n r;\n var docFrag = document.createDocumentFragment();\n var option = this.options[item.idx];\n var data = this.data ? this.data[item.idx] : option;\n var content = this.customSelected ? this.config.renderSelection(data) : option.textContent;\n var tag = util.createElement(\"li\", {\n \"class\": \"selectr-tag\",\n html: content\n });\n var btn = util.createElement(\"button\", {\n \"class\": \"selectr-tag-remove\",\n type: \"button\"\n });\n tag.appendChild(btn); // Set property to check against later\n\n tag.idx = item.idx;\n tag.tag = option.value;\n this.tags.push(tag);\n\n if (this.config.sortSelected) {\n var tags = this.tags.slice(); // Deal with values that contain numbers\n\n r = function r(val, arr) {\n val.replace(/(\\d+)|(\\D+)/g, function (that, $1, $2) {\n arr.push([$1 || Infinity, $2 || \"\"]);\n });\n };\n\n tags.sort(function (a, b) {\n var x = [],\n y = [],\n ac,\n bc;\n\n if (that.config.sortSelected === true) {\n ac = a.tag;\n bc = b.tag;\n } else if (that.config.sortSelected === 'text') {\n ac = a.textContent;\n bc = b.textContent;\n }\n\n r(ac, x);\n r(bc, y);\n\n while (x.length && y.length) {\n var ax = x.shift();\n var by = y.shift();\n var nn = ax[0] - by[0] || ax[1].localeCompare(by[1]);\n if (nn) return nn;\n }\n\n return x.length - y.length;\n });\n util.each(tags, function (i, tg) {\n docFrag.appendChild(tg);\n });\n this.label.textContent = \"\";\n } else {\n docFrag.appendChild(tag);\n }\n\n if (this.config.taggable) {\n this.label.insertBefore(docFrag, this.input.parentNode);\n } else {\n this.label.appendChild(docFrag);\n }\n};\n/**\n * Remove a tag\n * @param {HTMLElement} item\n * @return {void}\n */\n\n\nvar removeTag = function removeTag(item) {\n var tag = false;\n util.each(this.tags, function (i, t) {\n if (t.idx === item.idx) {\n tag = t;\n }\n }, this);\n\n if (tag) {\n this.label.removeChild(tag);\n this.tags.splice(this.tags.indexOf(tag), 1);\n }\n};\n/**\n * Load the next page of items\n * @return {void}\n */\n\n\nvar load = function load() {\n var tree = this.tree;\n var scrollTop = tree.scrollTop;\n var scrollHeight = tree.scrollHeight;\n var offsetHeight = tree.offsetHeight;\n var atBottom = scrollTop >= scrollHeight - offsetHeight;\n\n if (atBottom && this.pageIndex < this.pages.length) {\n var f = document.createDocumentFragment();\n util.each(this.pages[this.pageIndex], function (i, item) {\n appendItem(item, f, this.customOption);\n }, this);\n tree.appendChild(f);\n this.pageIndex++;\n this.emit(\"selectr.paginate\", {\n items: this.items.length,\n total: this.data.length,\n page: this.pageIndex,\n pages: this.pages.length\n });\n }\n};\n/**\n * Clear a search\n * @return {void}\n */\n\n\nvar clearSearch = function clearSearch() {\n if (this.config.searchable || this.config.taggable) {\n this.input.value = null;\n this.searching = false;\n\n if (this.config.searchable) {\n util.removeClass(this.inputContainer, \"active\");\n }\n\n if (util.hasClass(this.container, \"notice\")) {\n util.removeClass(this.container, \"notice\");\n util.addClass(this.container, \"open\");\n this.input.focus();\n }\n\n util.each(this.items, function (i, item) {\n // Items that didn't match need the class\n // removing to make them visible again\n util.removeClass(item, \"excluded\"); // Remove the span element for underlining matched items\n\n if (!this.customOption) {\n item.textContent = item.textContent + ''; // clear highlighting\n }\n }, this);\n }\n};\n/**\n * Query matching for searches\n * @param {string} query\n * @param {string} text\n */\n\n\nvar match = function match(query, text) {\n var result = new RegExp(query, \"i\").exec(text);\n\n if (result) {\n var start = result.index;\n var end = result.index + result[0].length;\n return {\n before: text.substring(0, start),\n match: text.substring(start, end),\n after: text.substring(end)\n };\n }\n\n return null;\n}; // Main Lib\n\n\nvar Selectr = function Selectr(el, config) {\n config = config || {};\n\n if (!el) {\n throw new Error(\"You must supply either a HTMLSelectElement or a CSS3 selector string.\");\n }\n\n this.el = el; // CSS3 selector string\n\n if (typeof el === \"string\") {\n this.el = document.querySelector(el);\n }\n\n if (this.el === null) {\n throw new Error(\"The element you passed to Selectr can not be found.\");\n }\n\n if (this.el.nodeName.toLowerCase() !== \"select\") {\n throw new Error(\"The element you passed to Selectr is not a HTMLSelectElement.\");\n }\n\n this.render(config);\n};\n/**\n * Render the instance\n * @param {object} config\n * @return {void}\n */\n\n\nSelectr.prototype.render = function (config) {\n if (this.rendered) return; // Merge defaults with user set config\n\n this.config = util.extend(defaultConfig, config); // Store type\n\n this.originalType = this.el.type; // Store tabIndex\n\n this.originalIndex = this.el.tabIndex; // Store defaultSelected options for form reset\n\n this.defaultSelected = []; // Store the original option count\n\n this.originalOptionCount = this.el.options.length;\n\n if (this.config.multiple || this.config.taggable) {\n this.el.multiple = true;\n } // Disabled?\n\n\n this.disabled = isset(this.config, \"disabled\");\n this.opened = false;\n\n if (this.config.taggable) {\n this.config.searchable = false;\n }\n\n this.navigating = false;\n this.mobileDevice = false;\n\n if (/Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(navigator.userAgent)) {\n this.mobileDevice = true;\n }\n\n this.customOption = this.config.hasOwnProperty(\"renderOption\") && typeof this.config.renderOption === \"function\";\n this.customSelected = this.config.hasOwnProperty(\"renderSelection\") && typeof this.config.renderSelection === \"function\"; // Enable event emitter\n\n Events.mixin(this);\n build.call(this);\n this.bindEvents();\n this.update();\n this.optsRect = util.rect(this.tree);\n this.rendered = true; // Fixes macOS Safari bug #28\n\n if (!this.el.multiple) {\n this.el.selectedIndex = this.selectedIndex;\n }\n\n var that = this;\n setTimeout(function () {\n that.emit(\"selectr.init\");\n }, 20);\n};\n\nSelectr.prototype.getSelected = function () {\n var selected = this.el.querySelectorAll('option:checked');\n return selected;\n};\n\nSelectr.prototype.getSelectedProperties = function (prop) {\n var selected = this.getSelected();\n var values = [].slice.call(selected).map(function (option) {\n return option[prop];\n }).filter(function (i) {\n return i !== null && i !== undefined;\n });\n return values;\n};\n/**\n * Attach the required event listeners\n */\n\n\nSelectr.prototype.bindEvents = function () {\n var that = this;\n this.events = {};\n this.events.dismiss = dismiss.bind(this);\n this.events.navigate = navigate.bind(this);\n this.events.reset = this.reset.bind(this);\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n this.container.addEventListener(\"touchstart\", function (e) {\n if (e.changedTouches[0].target === that.el) {\n that.toggle();\n }\n });\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n this.container.addEventListener(\"click\", function (e) {\n e.preventDefault(); // Jos: Added to prevent emitting clear directly after select\n\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n\n if (e.target === that.el) {\n that.toggle();\n }\n });\n }\n\n var getChangedOptions = function getChangedOptions(last, current) {\n var added = [],\n removed = last.slice(0);\n var idx;\n\n for (var i = 0; i < current.length; i++) {\n idx = removed.indexOf(current[i]);\n if (idx > -1) removed.splice(idx, 1);else added.push(current[i]);\n }\n\n return [added, removed];\n }; // Listen for the change on the native select\n // and update accordingly\n\n\n this.el.addEventListener(\"change\", function (e) {\n if (that.el.multiple) {\n var indexes = that.getSelectedProperties('idx');\n var changes = getChangedOptions(that.selectedIndexes, indexes);\n util.each(changes[0], function (i, idx) {\n that.select(idx);\n }, that);\n util.each(changes[1], function (i, idx) {\n that.deselect(idx);\n }, that);\n } else {\n if (that.el.selectedIndex > -1) {\n that.select(that.el.selectedIndex);\n }\n }\n });\n } // Open the dropdown with Enter key if focused\n\n\n if (this.config.nativeDropdown) {\n this.container.addEventListener(\"keydown\", function (e) {\n if (e.key === \"Enter\" && that.selected === document.activeElement) {\n // Show the native\n that.toggle(); // Focus on the native multiselect\n\n setTimeout(function () {\n that.el.focus();\n }, 200);\n }\n });\n } // Non-native dropdown\n\n\n this.selected.addEventListener(\"click\", function (e) {\n if (!that.disabled) {\n that.toggle();\n }\n\n e.preventDefault();\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n }); // Remove tag\n\n this.label.addEventListener(\"click\", function (e) {\n if (util.hasClass(e.target, \"selectr-tag-remove\")) {\n that.deselect(e.target.parentNode.idx);\n }\n }); // Clear input\n\n if (this.selectClear) {\n this.selectClear.addEventListener(\"click\", this.clear.bind(this));\n } // Prevent text selection\n\n\n this.tree.addEventListener(\"mousedown\", function (e) {\n e.preventDefault();\n }); // Select / deselect items\n\n this.tree.addEventListener(\"click\", function (e) {\n e.preventDefault(); // Jos: Added to prevent emitting clear directly after select\n\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n\n var item = util.closest(e.target, function (el) {\n return el && util.hasClass(el, \"selectr-option\");\n });\n\n if (item) {\n if (!util.hasClass(item, \"disabled\")) {\n if (util.hasClass(item, \"selected\")) {\n if (that.el.multiple || !that.el.multiple && that.config.allowDeselect) {\n that.deselect(item.idx);\n }\n } else {\n that.select(item.idx);\n }\n\n if (that.opened && !that.el.multiple) {\n that.close();\n }\n }\n }\n }); // Mouseover list items\n\n this.tree.addEventListener(\"mouseover\", function (e) {\n if (util.hasClass(e.target, \"selectr-option\")) {\n if (!util.hasClass(e.target, \"disabled\")) {\n util.removeClass(that.items[that.navIndex], \"active\");\n util.addClass(e.target, \"active\");\n that.navIndex = [].slice.call(that.items).indexOf(e.target);\n }\n }\n }); // Searchable\n\n if (this.config.searchable) {\n // Show / hide the search input clear button\n this.input.addEventListener(\"focus\", function (e) {\n that.searching = true;\n });\n this.input.addEventListener(\"blur\", function (e) {\n that.searching = false;\n });\n this.input.addEventListener(\"keyup\", function (e) {\n that.search();\n\n if (!that.config.taggable) {\n // Show / hide the search input clear button\n if (this.value.length) {\n util.addClass(this.parentNode, \"active\");\n } else {\n util.removeClass(this.parentNode, \"active\");\n }\n }\n }); // Clear the search input\n\n this.inputClear.addEventListener(\"click\", function (e) {\n that.input.value = null;\n clearSearch.call(that);\n\n if (!that.tree.childElementCount) {\n render.call(that);\n }\n });\n }\n\n if (this.config.taggable) {\n this.input.addEventListener(\"keyup\", function (e) {\n that.search();\n\n if (that.config.taggable && this.value.length) {\n var val = this.value.trim();\n\n if (e.which === 13 || util.includes(that.tagSeperators, e.key)) {\n util.each(that.tagSeperators, function (i, k) {\n val = val.replace(k, '');\n });\n var option = that.add({\n value: val,\n text: val,\n selected: true\n }, true);\n\n if (!option) {\n this.value = '';\n that.setMessage('That tag is already in use.');\n } else {\n that.close();\n clearSearch.call(that);\n }\n }\n }\n });\n }\n\n this.update = util.debounce(function () {\n // Optionally close dropdown on scroll / resize (#11)\n if (that.opened && that.config.closeOnScroll) {\n that.close();\n }\n\n if (that.width) {\n that.container.style.width = that.width;\n }\n\n that.invert();\n }, 50);\n\n if (this.requiresPagination) {\n this.paginateItems = util.debounce(function () {\n load.call(this);\n }, 50);\n this.tree.addEventListener(\"scroll\", this.paginateItems.bind(this));\n } // Dismiss when clicking outside the container\n\n\n document.addEventListener(\"click\", this.events.dismiss);\n window.addEventListener(\"keydown\", this.events.navigate);\n window.addEventListener(\"resize\", this.update);\n window.addEventListener(\"scroll\", this.update); // Listen for form.reset() (@ambrooks, #13)\n\n if (this.el.form) {\n this.el.form.addEventListener(\"reset\", this.events.reset);\n }\n};\n/**\n * Check for selected options\n * @param {bool} reset\n */\n\n\nSelectr.prototype.setSelected = function (reset) {\n // Select first option as with a native select-one element - #21, #24\n if (!this.config.data && !this.el.multiple && this.el.options.length) {\n // Browser has selected the first option by default\n if (this.el.selectedIndex === 0) {\n if (!this.el.options[0].defaultSelected && !this.config.defaultSelected) {\n this.el.selectedIndex = -1;\n }\n }\n\n this.selectedIndex = this.el.selectedIndex;\n\n if (this.selectedIndex > -1) {\n this.select(this.selectedIndex);\n }\n } // If we're changing a select-one to select-multiple via the config\n // and there are no selected options, the first option will be selected by the browser\n // Let's prevent that here.\n\n\n if (this.config.multiple && this.originalType === \"select-one\" && !this.config.data) {\n if (this.el.options[0].selected && !this.el.options[0].defaultSelected) {\n this.el.options[0].selected = false;\n }\n }\n\n util.each(this.options, function (i, option) {\n if (option.selected && option.defaultSelected) {\n this.select(option.idx);\n }\n }, this);\n\n if (this.config.selectedValue) {\n this.setValue(this.config.selectedValue);\n }\n\n if (this.config.data) {\n if (!this.el.multiple && this.config.defaultSelected && this.el.selectedIndex < 0) {\n this.select(0);\n }\n\n var j = 0;\n util.each(this.config.data, function (i, opt) {\n // Check for group options\n if (isset(opt, \"children\")) {\n util.each(opt.children, function (x, item) {\n if (item.hasOwnProperty(\"selected\") && item.selected === true) {\n this.select(j);\n }\n\n j++;\n }, this);\n } else {\n if (opt.hasOwnProperty(\"selected\") && opt.selected === true) {\n this.select(j);\n }\n\n j++;\n }\n }, this);\n }\n};\n/**\n * Destroy the instance\n * @return {void}\n */\n\n\nSelectr.prototype.destroy = function () {\n if (!this.rendered) return;\n this.emit(\"selectr.destroy\"); // Revert to select-single if programtically set to multiple\n\n if (this.originalType === 'select-one') {\n this.el.multiple = false;\n }\n\n if (this.config.data) {\n this.el.textContent = \"\";\n } // Remove the className from select element\n\n\n util.removeClass(this.el, 'selectr-hidden'); // Remove reset listener from parent form\n\n if (this.el.form) {\n util.off(this.el.form, \"reset\", this.events.reset);\n } // Remove event listeners attached to doc and win\n\n\n util.off(document, \"click\", this.events.dismiss);\n util.off(document, \"keydown\", this.events.navigate);\n util.off(window, \"resize\", this.update);\n util.off(window, \"scroll\", this.update); // Replace the container with the original select element\n\n this.container.parentNode.replaceChild(this.el, this.container);\n this.rendered = false;\n};\n/**\n * Change an options state\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.change = function (index) {\n var item = this.items[index],\n option = this.options[index];\n\n if (option.disabled) {\n return;\n }\n\n if (option.selected && util.hasClass(item, \"selected\")) {\n this.deselect(index);\n } else {\n this.select(index);\n }\n\n if (this.opened && !this.el.multiple) {\n this.close();\n }\n};\n/**\n * Select an option\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.select = function (index) {\n var item = this.items[index],\n options = [].slice.call(this.el.options),\n option = this.options[index];\n\n if (this.el.multiple) {\n if (util.includes(this.selectedIndexes, index)) {\n return false;\n }\n\n if (this.config.maxSelections && this.tags.length === this.config.maxSelections) {\n this.setMessage(\"A maximum of \" + this.config.maxSelections + \" items can be selected.\", true);\n return false;\n }\n\n this.selectedValues.push(option.value);\n this.selectedIndexes.push(index);\n addTag.call(this, item);\n } else {\n var data = this.data ? this.data[index] : option;\n this.label.textContent = this.customSelected ? this.config.renderSelection(data) : option.textContent;\n this.selectedValue = option.value;\n this.selectedIndex = index;\n util.each(this.options, function (i, o) {\n var opt = this.items[i];\n\n if (i !== index) {\n if (opt) {\n util.removeClass(opt, \"selected\");\n }\n\n o.selected = false;\n o.removeAttribute(\"selected\");\n }\n }, this);\n }\n\n if (!util.includes(options, option)) {\n this.el.add(option);\n }\n\n item.setAttribute(\"aria-selected\", true);\n util.addClass(item, \"selected\");\n util.addClass(this.container, \"has-selected\");\n option.selected = true;\n option.setAttribute(\"selected\", \"\");\n this.emit(\"selectr.change\", option);\n this.emit(\"selectr.select\", option);\n};\n/**\n * Deselect an option\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.deselect = function (index, force) {\n var item = this.items[index],\n option = this.options[index];\n\n if (this.el.multiple) {\n var selIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(selIndex, 1);\n var valIndex = this.selectedValues.indexOf(option.value);\n this.selectedValues.splice(valIndex, 1);\n removeTag.call(this, item);\n\n if (!this.tags.length) {\n util.removeClass(this.container, \"has-selected\");\n }\n } else {\n if (!force && !this.config.clearable && !this.config.allowDeselect) {\n return false;\n }\n\n this.label.textContent = \"\";\n this.selectedValue = null;\n this.el.selectedIndex = this.selectedIndex = -1;\n util.removeClass(this.container, \"has-selected\");\n }\n\n this.items[index].setAttribute(\"aria-selected\", false);\n util.removeClass(this.items[index], \"selected\");\n option.selected = false;\n option.removeAttribute(\"selected\");\n this.emit(\"selectr.change\", null);\n this.emit(\"selectr.deselect\", option);\n};\n/**\n * Programmatically set selected values\n * @param {String|Array} value - A string or an array of strings\n */\n\n\nSelectr.prototype.setValue = function (value) {\n var isArray = Array.isArray(value);\n\n if (!isArray) {\n value = value.toString().trim();\n } // Can't pass array to select-one\n\n\n if (!this.el.multiple && isArray) {\n return false;\n }\n\n util.each(this.options, function (i, option) {\n if (isArray && util.includes(value.toString(), option.value) || option.value === value) {\n this.change(option.idx);\n }\n }, this);\n};\n/**\n * Set the selected value(s)\n * @param {bool} toObject Return only the raw values or an object\n * @param {bool} toJson Return the object as a JSON string\n * @return {mixed} Array or String\n */\n\n\nSelectr.prototype.getValue = function (toObject, toJson) {\n var value;\n\n if (this.el.multiple) {\n if (toObject) {\n if (this.selectedIndexes.length) {\n value = {};\n value.values = [];\n util.each(this.selectedIndexes, function (i, index) {\n var option = this.options[index];\n value.values[i] = {\n value: option.value,\n text: option.textContent\n };\n }, this);\n }\n } else {\n value = this.selectedValues.slice();\n }\n } else {\n if (toObject) {\n var option = this.options[this.selectedIndex];\n value = {\n value: option.value,\n text: option.textContent\n };\n } else {\n value = this.selectedValue;\n }\n }\n\n if (toObject && toJson) {\n value = JSON.stringify(value);\n }\n\n return value;\n};\n/**\n * Add a new option or options\n * @param {object} data\n */\n\n\nSelectr.prototype.add = function (data, checkDuplicate) {\n if (data) {\n this.data = this.data || [];\n this.items = this.items || [];\n this.options = this.options || [];\n\n if (Array.isArray(data)) {\n // We have an array on items\n util.each(data, function (i, obj) {\n this.add(obj, checkDuplicate);\n }, this);\n } // User passed a single object to the method\n // or Selectr passed an object from an array\n else if (\"[object Object]\" === Object.prototype.toString.call(data)) {\n if (checkDuplicate) {\n var dupe = false;\n util.each(this.options, function (i, option) {\n if (option.value.toLowerCase() === data.value.toLowerCase()) {\n dupe = true;\n }\n });\n\n if (dupe) {\n return false;\n }\n }\n\n var option = util.createElement('option', data);\n this.data.push(data); // Add the new option to the list\n\n this.options.push(option); // Add the index for later use\n\n option.idx = this.options.length > 0 ? this.options.length - 1 : 0; // Create a new item\n\n createItem.call(this, option); // Select the item if required\n\n if (data.selected) {\n this.select(option.idx);\n }\n\n return option;\n } // We may have had an empty select so update\n // the placeholder to reflect the changes.\n\n\n this.setPlaceholder(); // Recount the pages\n\n if (this.config.pagination) {\n this.paginate();\n }\n\n return true;\n }\n};\n/**\n * Remove an option or options\n * @param {Mixed} o Array, integer (index) or string (value)\n * @return {Void}\n */\n\n\nSelectr.prototype.remove = function (o) {\n var options = [];\n\n if (Array.isArray(o)) {\n util.each(o, function (i, opt) {\n if (util.isInt(opt)) {\n options.push(this.getOptionByIndex(opt));\n } else if (typeof o === \"string\") {\n options.push(this.getOptionByValue(opt));\n }\n }, this);\n } else if (util.isInt(o)) {\n options.push(this.getOptionByIndex(o));\n } else if (typeof o === \"string\") {\n options.push(this.getOptionByValue(o));\n }\n\n if (options.length) {\n var index;\n util.each(options, function (i, option) {\n index = option.idx; // Remove the HTMLOptionElement\n\n this.el.remove(option); // Remove the reference from the option array\n\n this.options.splice(index, 1); // If the item has a parentNode (group element) it needs to be removed\n // otherwise the render function will still append it to the dropdown\n\n var parentNode = this.items[index].parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this.items[index]);\n } // Remove reference from the items array\n\n\n this.items.splice(index, 1); // Reset the indexes\n\n util.each(this.options, function (i, opt) {\n opt.idx = i;\n this.items[i].idx = i;\n }, this);\n }, this); // We may have had an empty select now so update\n // the placeholder to reflect the changes.\n\n this.setPlaceholder(); // Recount the pages\n\n if (this.config.pagination) {\n this.paginate();\n }\n }\n};\n/**\n * Remove all options\n */\n\n\nSelectr.prototype.removeAll = function () {\n // Clear any selected options\n this.clear(true); // Remove the HTMLOptionElements\n\n util.each(this.el.options, function (i, option) {\n this.el.remove(option);\n }, this); // Empty the dropdown\n\n util.truncate(this.tree); // Reset variables\n\n this.items = [];\n this.options = [];\n this.data = [];\n this.navIndex = 0;\n\n if (this.requiresPagination) {\n this.requiresPagination = false;\n this.pageIndex = 1;\n this.pages = [];\n } // Update the placeholder\n\n\n this.setPlaceholder();\n};\n/**\n * Perform a search\n * @param {string} query The query string\n */\n\n\nSelectr.prototype.search = function (string) {\n if (this.navigating) return;\n string = string || this.input.value;\n var f = document.createDocumentFragment(); // Remove message\n\n this.removeMessage(); // Clear the dropdown\n\n util.truncate(this.tree);\n\n if (string.length > 1) {\n // Check the options for the matching string\n util.each(this.options, function (i, option) {\n var item = this.items[option.idx];\n var includes = util.includes(option.textContent.toLowerCase(), string.toLowerCase());\n\n if (includes && !option.disabled) {\n appendItem(item, f, this.customOption);\n util.removeClass(item, \"excluded\"); // Underline the matching results\n\n if (!this.customOption) {\n item.textContent = '';\n var result = match(string, option.textContent);\n\n if (result) {\n item.appendChild(document.createTextNode(result.before));\n var highlight = document.createElement('span');\n highlight.className = 'selectr-match';\n highlight.appendChild(document.createTextNode(result.match));\n item.appendChild(highlight);\n item.appendChild(document.createTextNode(result.after));\n }\n }\n } else {\n util.addClass(item, \"excluded\");\n }\n }, this);\n\n if (!f.childElementCount) {\n if (!this.config.taggable) {\n this.setMessage(\"no results.\");\n }\n } else {\n // Highlight top result (@binary-koan #26)\n var prevEl = this.items[this.navIndex];\n var firstEl = f.firstElementChild;\n util.removeClass(prevEl, \"active\");\n this.navIndex = firstEl.idx;\n util.addClass(firstEl, \"active\");\n }\n } else {\n render.call(this);\n }\n\n this.tree.appendChild(f);\n};\n/**\n * Toggle the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.toggle = function () {\n if (!this.disabled) {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n};\n/**\n * Open the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.open = function () {\n var that = this;\n\n if (!this.options.length) {\n return false;\n }\n\n if (!this.opened) {\n this.emit(\"selectr.open\");\n }\n\n this.opened = true;\n\n if (this.mobileDevice || this.config.nativeDropdown) {\n util.addClass(this.container, \"native-open\");\n\n if (this.config.data) {\n // Dump the options into the select\n // otherwise the native dropdown will be empty\n util.each(this.options, function (i, option) {\n this.el.add(option);\n }, this);\n }\n\n return;\n }\n\n util.addClass(this.container, \"open\");\n render.call(this);\n this.invert();\n this.tree.scrollTop = 0;\n util.removeClass(this.container, \"notice\");\n this.selected.setAttribute(\"aria-expanded\", true);\n this.tree.setAttribute(\"aria-hidden\", false);\n this.tree.setAttribute(\"aria-expanded\", true);\n\n if (this.config.searchable && !this.config.taggable) {\n setTimeout(function () {\n that.input.focus(); // Allow tab focus\n\n that.input.tabIndex = 0;\n }, 10);\n }\n};\n/**\n * Close the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.close = function () {\n if (this.opened) {\n this.emit(\"selectr.close\");\n }\n\n this.opened = false;\n\n if (this.mobileDevice || this.config.nativeDropdown) {\n util.removeClass(this.container, \"native-open\");\n return;\n }\n\n var notice = util.hasClass(this.container, \"notice\");\n\n if (this.config.searchable && !notice) {\n this.input.blur(); // Disable tab focus\n\n this.input.tabIndex = -1;\n this.searching = false;\n }\n\n if (notice) {\n util.removeClass(this.container, \"notice\");\n this.notice.textContent = \"\";\n }\n\n util.removeClass(this.container, \"open\");\n util.removeClass(this.container, \"native-open\");\n this.selected.setAttribute(\"aria-expanded\", false);\n this.tree.setAttribute(\"aria-hidden\", true);\n this.tree.setAttribute(\"aria-expanded\", false);\n util.truncate(this.tree);\n clearSearch.call(this);\n};\n/**\n * Enable the element\n * @return {void}\n */\n\n\nSelectr.prototype.enable = function () {\n this.disabled = false;\n this.el.disabled = false;\n this.selected.tabIndex = this.originalIndex;\n\n if (this.el.multiple) {\n util.each(this.tags, function (i, t) {\n t.lastElementChild.tabIndex = 0;\n });\n }\n\n util.removeClass(this.container, \"selectr-disabled\");\n};\n/**\n * Disable the element\n * @param {boolean} container Disable the container only (allow value submit with form)\n * @return {void}\n */\n\n\nSelectr.prototype.disable = function (container) {\n if (!container) {\n this.el.disabled = true;\n }\n\n this.selected.tabIndex = -1;\n\n if (this.el.multiple) {\n util.each(this.tags, function (i, t) {\n t.lastElementChild.tabIndex = -1;\n });\n }\n\n this.disabled = true;\n util.addClass(this.container, \"selectr-disabled\");\n};\n/**\n * Reset to initial state\n * @return {void}\n */\n\n\nSelectr.prototype.reset = function () {\n if (!this.disabled) {\n this.clear();\n this.setSelected(true);\n util.each(this.defaultSelected, function (i, idx) {\n this.select(idx);\n }, this);\n this.emit(\"selectr.reset\");\n }\n};\n/**\n * Clear all selections\n * @return {void}\n */\n\n\nSelectr.prototype.clear = function (force) {\n if (this.el.multiple) {\n // Loop over the selectedIndexes so we don't have to loop over all the options\n // which can be costly if there are a lot of them\n if (this.selectedIndexes.length) {\n // Copy the array or we'll get an error\n var indexes = this.selectedIndexes.slice();\n util.each(indexes, function (i, idx) {\n this.deselect(idx);\n }, this);\n }\n } else {\n if (this.selectedIndex > -1) {\n this.deselect(this.selectedIndex, force);\n }\n }\n\n this.emit(\"selectr.clear\");\n};\n/**\n * Return serialised data\n * @param {boolean} toJson\n * @return {mixed} Returns either an object or JSON string\n */\n\n\nSelectr.prototype.serialise = function (toJson) {\n var data = [];\n util.each(this.options, function (i, option) {\n var obj = {\n value: option.value,\n text: option.textContent\n };\n\n if (option.selected) {\n obj.selected = true;\n }\n\n if (option.disabled) {\n obj.disabled = true;\n }\n\n data[i] = obj;\n });\n return toJson ? JSON.stringify(data) : data;\n};\n/**\n * Localised version of serialise() method\n */\n\n\nSelectr.prototype.serialize = function (toJson) {\n return this.serialise(toJson);\n};\n/**\n * Sets the placeholder\n * @param {String} placeholder\n */\n\n\nSelectr.prototype.setPlaceholder = function (placeholder) {\n // Set the placeholder\n placeholder = placeholder || this.config.placeholder || this.el.getAttribute(\"placeholder\");\n\n if (!this.options.length) {\n placeholder = \"No options available\";\n }\n\n this.placeEl.textContent = placeholder;\n};\n/**\n * Paginate the option list\n * @return {Array}\n */\n\n\nSelectr.prototype.paginate = function () {\n if (this.items.length) {\n var that = this;\n this.pages = this.items.map(function (v, i) {\n return i % that.config.pagination === 0 ? that.items.slice(i, i + that.config.pagination) : null;\n }).filter(function (pages) {\n return pages;\n });\n return this.pages;\n }\n};\n/**\n * Display a message\n * @param {String} message The message\n */\n\n\nSelectr.prototype.setMessage = function (message, close) {\n if (close) {\n this.close();\n }\n\n util.addClass(this.container, \"notice\");\n this.notice.textContent = message;\n};\n/**\n * Dismiss the current message\n */\n\n\nSelectr.prototype.removeMessage = function () {\n util.removeClass(this.container, \"notice\");\n this.notice.textContent = \"\";\n};\n/**\n * Keep the dropdown within the window\n * @return {void}\n */\n\n\nSelectr.prototype.invert = function () {\n var rt = util.rect(this.selected),\n oh = this.tree.parentNode.offsetHeight,\n wh = window.innerHeight,\n doInvert = rt.top + rt.height + oh > wh;\n\n if (doInvert) {\n util.addClass(this.container, \"inverted\");\n this.isInverted = true;\n } else {\n util.removeClass(this.container, \"inverted\");\n this.isInverted = false;\n }\n\n this.optsRect = util.rect(this.tree);\n};\n/**\n * Get an option via it's index\n * @param {Integer} index The index of the HTMLOptionElement required\n * @return {HTMLOptionElement}\n */\n\n\nSelectr.prototype.getOptionByIndex = function (index) {\n return this.options[index];\n};\n/**\n * Get an option via it's value\n * @param {String} value The value of the HTMLOptionElement required\n * @return {HTMLOptionElement}\n */\n\n\nSelectr.prototype.getOptionByValue = function (value) {\n var option = false;\n\n for (var i = 0, l = this.options.length; i < l; i++) {\n if (this.options[i].value.trim() === value.toString().trim()) {\n option = this.options[i];\n break;\n }\n }\n\n return option;\n};\n\nmodule.exports = Selectr;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return createAbsoluteAnchor; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n\n/**\n * Create an anchor element absolutely positioned in the `parent`\n * element.\n * @param {HTMLElement} anchor\n * @param {HTMLElement} parent\n * @param {function(HTMLElement)} [onDestroy] Callback when the anchor is destroyed\n * @param {boolean} [destroyOnMouseOut=false] If true, anchor will be removed on mouse out\n * @returns {HTMLElement}\n */\n\nfunction createAbsoluteAnchor(anchor, parent, onDestroy) {\n var destroyOnMouseOut = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var root = getRootNode(anchor);\n var eventListeners = {};\n var anchorRect = anchor.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n var absoluteAnchor = document.createElement('div');\n absoluteAnchor.className = 'jsoneditor-anchor';\n absoluteAnchor.style.position = 'absolute';\n absoluteAnchor.style.left = anchorRect.left - parentRect.left + 'px';\n absoluteAnchor.style.top = anchorRect.top - parentRect.top + 'px';\n absoluteAnchor.style.width = anchorRect.width - 2 + 'px';\n absoluteAnchor.style.height = anchorRect.height - 2 + 'px';\n absoluteAnchor.style.boxSizing = 'border-box';\n parent.appendChild(absoluteAnchor);\n\n function destroy() {\n // remove temporary absolutely positioned anchor\n if (absoluteAnchor && absoluteAnchor.parentNode) {\n absoluteAnchor.parentNode.removeChild(absoluteAnchor); // remove all event listeners\n // all event listeners are supposed to be attached to document.\n\n for (var name in eventListeners) {\n if (hasOwnProperty(eventListeners, name)) {\n var fn = eventListeners[name];\n\n if (fn) {\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"removeEventListener\"])(root, name, fn);\n }\n\n delete eventListeners[name];\n }\n }\n\n if (typeof onDestroy === 'function') {\n onDestroy(anchor);\n }\n }\n }\n\n function isOutside(target) {\n return target !== absoluteAnchor && !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isChildOf\"])(target, absoluteAnchor);\n } // create and attach event listeners\n\n\n function destroyIfOutside(event) {\n if (isOutside(event.target)) {\n destroy();\n }\n }\n\n eventListeners.mousedown = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"addEventListener\"])(root, 'mousedown', destroyIfOutside);\n eventListeners.mousewheel = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"addEventListener\"])(root, 'mousewheel', destroyIfOutside);\n\n if (destroyOnMouseOut) {\n var destroyTimer = null;\n\n absoluteAnchor.onmouseover = function () {\n clearTimeout(destroyTimer);\n destroyTimer = null;\n };\n\n absoluteAnchor.onmouseout = function () {\n if (!destroyTimer) {\n destroyTimer = setTimeout(destroy, 200);\n }\n };\n }\n\n absoluteAnchor.destroy = destroy;\n return absoluteAnchor;\n}\n/**\n * Node.getRootNode shim\n * @param {HTMLElement} node node to check\n * @return {HTMLElement} node's rootNode or `window` if there is ShadowDOM is not supported.\n */\n\nfunction getRootNode(node) {\n return typeof node.getRootNode === 'function' ? node.getRootNode() : window;\n}\n\nfunction hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar VanillaPicker;\n\nif (window.Picker) {\n // use the already loaded instance of VanillaPicker\n VanillaPicker = window.Picker;\n} else {\n try {\n // load color picker\n VanillaPicker = __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'vanilla-picker'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n } catch (err) {// probably running the minimalist bundle\n }\n}\n\nmodule.exports = VanillaPicker;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n(function (root, factory) {\n \"use strict\";\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n else {}\n}(this, function () {\n\n /**\n * A self-contained modal library\n */\n \"use strict\";\n\n /** Returns whether a value is a dom node */\n function isNode(value) {\n if ( typeof Node === \"object\" ) {\n return value instanceof Node;\n }\n else {\n return value && typeof value === \"object\" && typeof value.nodeType === \"number\";\n }\n }\n\n /** Returns whether a value is a string */\n function isString(value) {\n return typeof value === \"string\";\n }\n\n /**\n * Generates observable objects that can be watched and triggered\n */\n function observable() {\n var callbacks = [];\n return {\n watch: callbacks.push.bind(callbacks),\n trigger: function(context, detail) {\n\n var unprevented = true;\n var event = {\n detail: detail,\n preventDefault: function preventDefault () {\n unprevented = false;\n }\n };\n\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](context, event);\n }\n\n return unprevented;\n }\n };\n }\n\n\n /** Whether an element is hidden */\n function isHidden ( elem ) {\n // @see http://stackoverflow.com/questions/19669786\n return window.getComputedStyle(elem).display === 'none';\n }\n\n\n /**\n * A small interface for creating and managing a dom element\n */\n function Elem( elem ) {\n this.elem = elem;\n }\n\n /** Creates a new div */\n Elem.make = function ( parent, tag ) {\n if ( typeof parent === \"string\" ) {\n parent = document.querySelector(parent);\n }\n var elem = document.createElement(tag || 'div');\n (parent || document.body).appendChild(elem);\n return new Elem(elem);\n };\n\n Elem.prototype = {\n\n /** Creates a child of this node */\n child: function (tag) {\n return Elem.make(this.elem, tag);\n },\n\n /** Applies a set of styles to an element */\n stylize: function(styles) {\n styles = styles || {};\n\n if ( typeof styles.opacity !== \"undefined\" ) {\n styles.filter = \"alpha(opacity=\" + (styles.opacity * 100) + \")\";\n }\n\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n this.elem.style[prop] = styles[prop];\n }\n }\n\n return this;\n },\n\n /** Adds a class name */\n clazz: function (clazz) {\n this.elem.className += \" \" + clazz;\n return this;\n },\n\n /** Sets the HTML */\n html: function (content) {\n if ( isNode(content) ) {\n this.elem.appendChild( content );\n }\n else {\n this.elem.innerHTML = content;\n }\n return this;\n },\n\n /** Adds a click handler to this element */\n onClick: function(callback) {\n this.elem.addEventListener('click', callback);\n return this;\n },\n\n /** Removes this element from the DOM */\n destroy: function() {\n this.elem.parentNode.removeChild(this.elem);\n },\n\n /** Hides this element */\n hide: function() {\n this.elem.style.display = \"none\";\n },\n\n /** Shows this element */\n show: function() {\n this.elem.style.display = \"block\";\n },\n\n /** Sets an attribute on this element */\n attr: function ( name, value ) {\n if (value !== undefined) {\n this.elem.setAttribute(name, value);\n }\n return this;\n },\n\n /** Executes a callback on all the ancestors of an element */\n anyAncestor: function ( predicate ) {\n var elem = this.elem;\n while ( elem ) {\n if ( predicate( new Elem(elem) ) ) {\n return true;\n }\n else {\n elem = elem.parentNode;\n }\n }\n return false;\n },\n\n /** Whether this element is visible */\n isVisible: function () {\n return !isHidden(this.elem);\n }\n };\n\n\n /** Generates the grey-out effect */\n function buildOverlay( getOption, close ) {\n return Elem.make( getOption(\"parent\") )\n .clazz(\"pico-overlay\")\n .clazz( getOption(\"overlayClass\", \"\") )\n .stylize({\n display: \"none\",\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n height: \"100%\",\n width: \"100%\",\n zIndex: 10000\n })\n .stylize(getOption('overlayStyles', {\n opacity: 0.5,\n background: \"#000\"\n }))\n .onClick(function () {\n if ( getOption('overlayClose', true) ) {\n close();\n }\n });\n }\n\n // An auto incrementing ID assigned to each modal\n var autoinc = 1;\n\n /** Builds the content of a modal */\n function buildModal( getOption, close ) {\n var width = getOption('width', 'auto');\n if ( typeof width === \"number\" ) {\n width = \"\" + width + \"px\";\n }\n\n var id = getOption(\"modalId\", \"pico-\" + autoinc++);\n\n var elem = Elem.make( getOption(\"parent\") )\n .clazz(\"pico-content\")\n .clazz( getOption(\"modalClass\", \"\") )\n .stylize({\n display: 'none',\n position: 'fixed',\n zIndex: 10001,\n left: \"50%\",\n top: \"38.1966%\",\n maxHeight: '90%',\n boxSizing: 'border-box',\n width: width,\n '-ms-transform': 'translate(-50%,-38.1966%)',\n '-moz-transform': 'translate(-50%,-38.1966%)',\n '-webkit-transform': 'translate(-50%,-38.1966%)',\n '-o-transform': 'translate(-50%,-38.1966%)',\n transform: 'translate(-50%,-38.1966%)'\n })\n .stylize(getOption('modalStyles', {\n overflow: 'auto',\n backgroundColor: \"white\",\n padding: \"20px\",\n borderRadius: \"5px\"\n }))\n .html( getOption('content') )\n .attr(\"id\", id)\n .attr(\"role\", \"dialog\")\n .attr(\"aria-labelledby\", getOption(\"ariaLabelledBy\"))\n .attr(\"aria-describedby\", getOption(\"ariaDescribedBy\", id))\n .onClick(function (event) {\n var isCloseClick = new Elem(event.target).anyAncestor(function (elem) {\n return /\\bpico-close\\b/.test(elem.elem.className);\n });\n if ( isCloseClick ) {\n close();\n }\n });\n\n return elem;\n }\n\n /** Builds the close button */\n function buildClose ( elem, getOption ) {\n if ( getOption('closeButton', true) ) {\n return elem.child('button')\n .html( getOption('closeHtml', \"&#xD7;\") )\n .clazz(\"pico-close\")\n .clazz( getOption(\"closeClass\", \"\") )\n .stylize( getOption('closeStyles', {\n borderRadius: \"2px\",\n border: 0,\n padding: 0,\n cursor: \"pointer\",\n height: \"15px\",\n width: \"15px\",\n position: \"absolute\",\n top: \"5px\",\n right: \"5px\",\n fontSize: \"16px\",\n textAlign: \"center\",\n lineHeight: \"15px\",\n background: \"#CCC\"\n }) )\n .attr(\"aria-label\", getOption(\"close-label\", \"Close\"));\n }\n }\n\n /** Builds a method that calls a method and returns an element */\n function buildElemAccessor( builder ) {\n return function () {\n return builder().elem;\n };\n }\n\n\n // An observable that is triggered whenever the escape key is pressed\n var escapeKey = observable();\n\n // An observable that is triggered when the user hits the tab key\n var tabKey = observable();\n\n /** A global event handler to detect the escape key being pressed */\n document.documentElement.addEventListener('keydown', function onKeyPress (event) {\n var keycode = event.which || event.keyCode;\n\n // If this is the escape key\n if ( keycode === 27 ) {\n escapeKey.trigger();\n }\n\n // If this is the tab key\n else if ( keycode === 9 ) {\n tabKey.trigger(event);\n }\n });\n\n\n /** Attaches focus management events */\n function manageFocus ( iface, isEnabled ) {\n\n /** Whether an element matches a selector */\n function matches ( elem, selector ) {\n var fn = elem.msMatchesSelector || elem.webkitMatchesSelector || elem.matches;\n return fn.call(elem, selector);\n }\n\n /**\n * Returns whether an element is focusable\n * @see http://stackoverflow.com/questions/18261595\n */\n function canFocus( elem ) {\n if (\n isHidden(elem) ||\n matches(elem, \":disabled\") ||\n elem.hasAttribute(\"contenteditable\")\n ) {\n return false;\n }\n else {\n return elem.hasAttribute(\"tabindex\") ||\n matches(elem, \"input,select,textarea,button,a[href],area[href],iframe\");\n }\n }\n\n /** Returns the first descendant that can be focused */\n function firstFocusable ( elem ) {\n var items = elem.getElementsByTagName(\"*\");\n for (var i = 0; i < items.length; i++) {\n if ( canFocus(items[i]) ) {\n return items[i];\n }\n }\n }\n\n /** Returns the last descendant that can be focused */\n function lastFocusable ( elem ) {\n var items = elem.getElementsByTagName(\"*\");\n for (var i = items.length; i--;) {\n if ( canFocus(items[i]) ) {\n return items[i];\n }\n }\n }\n\n // The element focused before the modal opens\n var focused;\n\n // Records the currently focused element so state can be returned\n // after the modal closes\n iface.beforeShow(function getActiveFocus() {\n focused = document.activeElement;\n });\n\n // Shift focus into the modal\n iface.afterShow(function focusModal() {\n if ( isEnabled() ) {\n var focusable = firstFocusable(iface.modalElem());\n if ( focusable ) {\n focusable.focus();\n }\n }\n });\n\n // Restore the previously focused element when the modal closes\n iface.afterClose(function returnFocus() {\n if ( isEnabled() && focused ) {\n focused.focus();\n }\n focused = null;\n });\n\n // Capture tab key presses and loop them within the modal\n tabKey.watch(function tabKeyPress (event) {\n if ( isEnabled() && iface.isVisible() ) {\n var first = firstFocusable(iface.modalElem());\n var last = lastFocusable(iface.modalElem());\n\n var from = event.shiftKey ? first : last;\n if ( from === document.activeElement ) {\n (event.shiftKey ? last : first).focus();\n event.preventDefault();\n }\n }\n });\n }\n\n /** Manages setting the 'overflow: hidden' on the body tag */\n function manageBodyOverflow(iface, isEnabled) {\n var origOverflow;\n var body = new Elem(document.body);\n\n iface.beforeShow(function () {\n // Capture the current values so they can be restored\n origOverflow = body.elem.style.overflow;\n\n if (isEnabled()) {\n body.stylize({ overflow: \"hidden\" });\n }\n });\n\n iface.afterClose(function () {\n body.stylize({ overflow: origOverflow });\n });\n }\n\n /**\n * Displays a modal\n */\n return function picoModal(options) {\n\n if ( isString(options) || isNode(options) ) {\n options = { content: options };\n }\n\n var afterCreateEvent = observable();\n var beforeShowEvent = observable();\n var afterShowEvent = observable();\n var beforeCloseEvent = observable();\n var afterCloseEvent = observable();\n\n /**\n * Returns a named option if it has been explicitly defined. Otherwise,\n * it returns the given default value\n */\n function getOption ( opt, defaultValue ) {\n var value = options[opt];\n if ( typeof value === \"function\" ) {\n value = value( defaultValue );\n }\n return value === undefined ? defaultValue : value;\n }\n\n\n // The various DOM elements that constitute the modal\n var modalElem = build.bind(window, 'modal');\n var shadowElem = build.bind(window, 'overlay');\n var closeElem = build.bind(window, 'close');\n\n // This will eventually contain the modal API returned to the user\n var iface;\n\n\n /** Hides this modal */\n function forceClose (detail) {\n shadowElem().hide();\n modalElem().hide();\n afterCloseEvent.trigger(iface, detail);\n }\n\n /** Gracefully hides this modal */\n function close (detail) {\n if ( beforeCloseEvent.trigger(iface, detail) ) {\n forceClose(detail);\n }\n }\n\n /** Wraps a method so it returns the modal interface */\n function returnIface ( callback ) {\n return function () {\n callback.apply(this, arguments);\n return iface;\n };\n }\n\n\n // The constructed dom nodes\n var built;\n\n /** Builds a method that calls a method and returns an element */\n function build (name, detail) {\n if ( !built ) {\n var modal = buildModal(getOption, close);\n built = {\n modal: modal,\n overlay: buildOverlay(getOption, close),\n close: buildClose(modal, getOption)\n };\n afterCreateEvent.trigger(iface, detail);\n }\n return built[name];\n }\n\n iface = {\n\n /** Returns the wrapping modal element */\n modalElem: buildElemAccessor(modalElem),\n\n /** Returns the close button element */\n closeElem: buildElemAccessor(closeElem),\n\n /** Returns the overlay element */\n overlayElem: buildElemAccessor(shadowElem),\n\n /** Builds the dom without showing the modal */\n buildDom: returnIface(build.bind(null, null)),\n\n /** Returns whether this modal is currently being shown */\n isVisible: function () {\n return !!(built && modalElem && modalElem().isVisible());\n },\n\n /** Shows this modal */\n show: function (detail) {\n if ( beforeShowEvent.trigger(iface, detail) ) {\n shadowElem().show();\n closeElem();\n modalElem().show();\n afterShowEvent.trigger(iface, detail);\n }\n return this;\n },\n\n /** Hides this modal */\n close: returnIface(close),\n\n /**\n * Force closes this modal. This will not call beforeClose\n * events and will just immediately hide the modal\n */\n forceClose: returnIface(forceClose),\n\n /** Destroys this modal */\n destroy: function () {\n modalElem().destroy();\n shadowElem().destroy();\n shadowElem = modalElem = closeElem = undefined;\n },\n\n /**\n * Updates the options for this modal. This will only let you\n * change options that are re-evaluted regularly, such as\n * `overlayClose`.\n */\n options: function ( opts ) {\n Object.keys(opts).map(function (key) {\n options[key] = opts[key];\n });\n },\n\n /** Executes after the DOM nodes are created */\n afterCreate: returnIface(afterCreateEvent.watch),\n\n /** Executes a callback before this modal is closed */\n beforeShow: returnIface(beforeShowEvent.watch),\n\n /** Executes a callback after this modal is shown */\n afterShow: returnIface(afterShowEvent.watch),\n\n /** Executes a callback before this modal is closed */\n beforeClose: returnIface(beforeCloseEvent.watch),\n\n /** Executes a callback after this modal is closed */\n afterClose: returnIface(afterCloseEvent.watch)\n };\n\n manageFocus(iface, getOption.bind(null, \"focus\", true));\n\n manageBodyOverflow(iface, getOption.bind(null, \"bodyOverflow\", true));\n\n // If a user presses the 'escape' key, close the modal.\n escapeKey.watch(function escapeKeyPress () {\n if ( getOption(\"escCloses\", true) && iface.isVisible() ) {\n iface.close();\n }\n });\n\n return iface;\n };\n\n}));\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ErrorTable; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * Show errors and schema warnings in a clickable table view\n * @param {Object} config\n * @property {boolean} errorTableVisible\n * @property {function (boolean) : void} onToggleVisibility\n * @property {function (number)} [onFocusLine]\n * @property {function (number)} onChangeHeight\n * @constructor\n */\nvar ErrorTable = /*#__PURE__*/function () {\n function ErrorTable(config) {\n _classCallCheck(this, ErrorTable);\n\n this.errorTableVisible = config.errorTableVisible;\n this.onToggleVisibility = config.onToggleVisibility;\n\n this.onFocusLine = config.onFocusLine || function () {};\n\n this.onChangeHeight = config.onChangeHeight;\n this.dom = {};\n var validationErrorsContainer = document.createElement('div');\n validationErrorsContainer.className = 'jsoneditor-validation-errors-container';\n this.dom.validationErrorsContainer = validationErrorsContainer;\n var additionalErrorsIndication = document.createElement('div');\n additionalErrorsIndication.style.display = 'none';\n additionalErrorsIndication.className = 'jsoneditor-additional-errors fadein';\n additionalErrorsIndication.textContent = \"Scroll for more \\u25BF\";\n this.dom.additionalErrorsIndication = additionalErrorsIndication;\n validationErrorsContainer.appendChild(additionalErrorsIndication);\n var validationErrorIcon = document.createElement('span');\n validationErrorIcon.className = 'jsoneditor-validation-error-icon';\n validationErrorIcon.style.display = 'none';\n this.dom.validationErrorIcon = validationErrorIcon;\n var validationErrorCount = document.createElement('span');\n validationErrorCount.className = 'jsoneditor-validation-error-count';\n validationErrorCount.style.display = 'none';\n this.dom.validationErrorCount = validationErrorCount;\n this.dom.parseErrorIndication = document.createElement('span');\n this.dom.parseErrorIndication.className = 'jsoneditor-parse-error-icon';\n this.dom.parseErrorIndication.style.display = 'none';\n }\n\n _createClass(ErrorTable, [{\n key: \"getErrorTable\",\n value: function getErrorTable() {\n return this.dom.validationErrorsContainer;\n }\n }, {\n key: \"getErrorCounter\",\n value: function getErrorCounter() {\n return this.dom.validationErrorCount;\n }\n }, {\n key: \"getWarningIcon\",\n value: function getWarningIcon() {\n return this.dom.validationErrorIcon;\n }\n }, {\n key: \"getErrorIcon\",\n value: function getErrorIcon() {\n return this.dom.parseErrorIndication;\n }\n }, {\n key: \"toggleTableVisibility\",\n value: function toggleTableVisibility() {\n this.errorTableVisible = !this.errorTableVisible;\n this.onToggleVisibility(this.errorTableVisible);\n }\n }, {\n key: \"setErrors\",\n value: function setErrors(errors, errorLocations) {\n var _this = this;\n\n // clear any previous errors\n if (this.dom.validationErrors) {\n this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors);\n this.dom.validationErrors = null;\n this.dom.additionalErrorsIndication.style.display = 'none';\n } // create the table with errors\n // keep default behavior for parse errors\n\n\n if (this.errorTableVisible && errors.length > 0) {\n var validationErrors = document.createElement('div');\n validationErrors.className = 'jsoneditor-validation-errors';\n var table = document.createElement('table');\n table.className = 'jsoneditor-text-errors';\n validationErrors.appendChild(table);\n var tbody = document.createElement('tbody');\n table.appendChild(tbody);\n errors.forEach(function (error) {\n var line;\n\n if (!isNaN(error.line)) {\n line = error.line;\n } else if (error.dataPath) {\n var errLoc = errorLocations.find(function (loc) {\n return loc.path === error.dataPath;\n });\n\n if (errLoc) {\n line = errLoc.line + 1;\n }\n }\n\n var trEl = document.createElement('tr');\n trEl.className = !isNaN(line) ? 'jump-to-line' : '';\n\n if (error.type === 'error') {\n trEl.className += ' parse-error';\n } else {\n trEl.className += ' validation-error';\n }\n\n var td1 = document.createElement('td');\n var button = document.createElement('button');\n button.className = 'jsoneditor-schema-error';\n td1.appendChild(button);\n trEl.appendChild(td1);\n var td2 = document.createElement('td');\n td2.style = 'white-space: nowrap;';\n td2.textContent = !isNaN(line) ? 'Ln ' + line : '';\n trEl.appendChild(td2);\n\n if (typeof error === 'string') {\n var td34 = document.createElement('td');\n td34.colSpan = 2;\n var pre = document.createElement('pre');\n pre.appendChild(document.createTextNode(error));\n td34.appendChild(pre);\n trEl.appendChild(td34);\n } else {\n var td3 = document.createElement('td');\n td3.appendChild(document.createTextNode(error.dataPath || ''));\n trEl.appendChild(td3);\n var td4 = document.createElement('td');\n\n var _pre = document.createElement('pre');\n\n _pre.appendChild(document.createTextNode(error.message));\n\n td4.appendChild(_pre);\n trEl.appendChild(td4);\n }\n\n trEl.onclick = function () {\n _this.onFocusLine(line);\n };\n\n tbody.appendChild(trEl);\n });\n this.dom.validationErrors = validationErrors;\n this.dom.validationErrorsContainer.appendChild(validationErrors);\n this.dom.additionalErrorsIndication.title = errors.length + ' errors total';\n\n if (this.dom.validationErrorsContainer.clientHeight < this.dom.validationErrorsContainer.scrollHeight) {\n this.dom.additionalErrorsIndication.style.display = 'block';\n\n this.dom.validationErrorsContainer.onscroll = function () {\n _this.dom.additionalErrorsIndication.style.display = _this.dom.validationErrorsContainer.clientHeight > 0 && _this.dom.validationErrorsContainer.scrollTop === 0 ? 'block' : 'none';\n };\n } else {\n this.dom.validationErrorsContainer.onscroll = undefined;\n }\n\n var height = this.dom.validationErrorsContainer.clientHeight + (this.dom.statusBar ? this.dom.statusBar.clientHeight : 0); // this.content.style.marginBottom = (-height) + 'px';\n // this.content.style.paddingBottom = height + 'px';\n\n this.onChangeHeight(height);\n } else {\n this.onChangeHeight(0);\n } // update the status bar\n\n\n var validationErrorsCount = errors.filter(function (error) {\n return error.type !== 'error';\n }).length;\n\n if (validationErrorsCount > 0) {\n this.dom.validationErrorCount.style.display = 'inline';\n this.dom.validationErrorCount.innerText = validationErrorsCount;\n this.dom.validationErrorCount.onclick = this.toggleTableVisibility.bind(this);\n this.dom.validationErrorIcon.style.display = 'inline';\n this.dom.validationErrorIcon.title = validationErrorsCount + ' schema validation error(s) found';\n this.dom.validationErrorIcon.onclick = this.toggleTableVisibility.bind(this);\n } else {\n this.dom.validationErrorCount.style.display = 'none';\n this.dom.validationErrorIcon.style.display = 'none';\n } // update the parse error icon\n\n\n var hasParseErrors = errors.some(function (error) {\n return error.type === 'error';\n });\n\n if (hasParseErrors) {\n var line = errors[0].line;\n this.dom.parseErrorIndication.style.display = 'block';\n this.dom.parseErrorIndication.title = !isNaN(line) ? 'parse error on line ' + line : 'parse error - check that the json is valid';\n this.dom.parseErrorIndication.onclick = this.toggleTableVisibility.bind(this);\n } else {\n this.dom.parseErrorIndication.style.display = 'none';\n }\n }\n }]);\n\n return ErrorTable;\n}();\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ace;\n\nif (window.ace) {\n // use the already loaded instance of Ace\n ace = window.ace;\n} else {\n try {\n // load Ace editor\n ace = __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/ace'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); // load required Ace plugins\n\n __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/mode-json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/ext-searchbox'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); // embed Ace json worker\n // https://github.com/ajaxorg/ace/issues/3913\n\n\n var jsonWorkerDataUrl = __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module '../generated/worker-json-data-url'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n ace.config.setModuleUrl('ace/mode/json_worker', jsonWorkerDataUrl);\n } catch (err) {// failed to load Ace (can be minimalist bundle).\n // No worries, the editor will fall back to plain text if needed.\n }\n}\n\nmodule.exports = ace;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"textModeMixins\", function() { return /* binding */ textModeMixins; });\n\n// EXTERNAL MODULE: ./node_modules/simple-json-repair/lib/umd/simpleJsonRepair.min.js\nvar simpleJsonRepair_min = __webpack_require__(7);\nvar simpleJsonRepair_min_default = /*#__PURE__*/__webpack_require__.n(simpleJsonRepair_min);\n\n// EXTERNAL MODULE: ./src/js/ace/index.js\nvar ace = __webpack_require__(16);\nvar ace_default = /*#__PURE__*/__webpack_require__.n(ace);\n\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(2);\n\n// EXTERNAL MODULE: ./src/js/ErrorTable.js\nvar ErrorTable = __webpack_require__(15);\n\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(9);\n\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar showSortModal = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar showTransformModal = __webpack_require__(6);\n\n// EXTERNAL MODULE: ./src/js/tryRequireThemeJsonEditor.js\nvar tryRequireThemeJsonEditor = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/js/validationUtils.js\n\n/**\n * Execute custom validation if configured.\n *\n * Returns a promise resolving with the custom errors (or an empty array).\n */\n\nfunction validateCustom(json, onValidate) {\n if (!onValidate) {\n return Promise.resolve([]);\n }\n\n try {\n var customValidateResults = onValidate(json);\n var resultPromise = Object(util[\"isPromise\"])(customValidateResults) ? customValidateResults : Promise.resolve(customValidateResults);\n return resultPromise.then(function (customValidationPathErrors) {\n if (Array.isArray(customValidationPathErrors)) {\n return customValidationPathErrors.filter(function (error) {\n var valid = Object(util[\"isValidValidationError\"])(error);\n\n if (!valid) {\n console.warn('Ignoring a custom validation error with invalid structure. ' + 'Expected structure: {path: [...], message: \"...\"}. ' + 'Actual error:', error);\n }\n\n return valid;\n }).map(function (error) {\n return (// change data structure into the structure matching the JSON schema errors\n {\n dataPath: Object(util[\"stringifyPath\"])(error.path),\n message: error.message,\n type: 'customValidation'\n }\n );\n });\n } else {\n return [];\n }\n });\n } catch (err) {\n return Promise.reject(err);\n }\n}\n// CONCATENATED MODULE: ./src/js/textmode.js\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n // create a mixin with the functions for text mode\n\nvar textmode = {};\nvar DEFAULT_THEME = 'ace/theme/jsoneditor';\n/**\n * Create a text editor\n * @param {Element} container\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\ntextmode.create = function (container) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof options.statusBar === 'undefined') {\n options.statusBar = true;\n } // setting default for textmode\n\n\n options.mainMenuBar = options.mainMenuBar !== false;\n options.enableSort = options.enableSort !== false;\n options.enableTransform = options.enableTransform !== false;\n options.createQuery = options.createQuery || jmespathQuery[\"a\" /* createQuery */];\n options.executeQuery = options.executeQuery || jmespathQuery[\"b\" /* executeQuery */];\n this.options = options; // indentation\n\n if (typeof options.indentation === 'number') {\n this.indentation = Number(options.indentation);\n } else {\n this.indentation = 2; // number of spaces\n } // language\n\n\n Object(i18n[\"b\" /* setLanguages */])(this.options.languages);\n Object(i18n[\"a\" /* setLanguage */])(this.options.language); // grab ace from options if provided\n\n var _ace = options.ace ? options.ace : ace_default.a; // TODO: make the option options.ace deprecated, it's not needed anymore (see #309)\n // determine mode\n\n\n this.mode = options.mode === 'code' ? 'code' : 'text';\n\n if (this.mode === 'code') {\n // verify whether Ace editor is available and supported\n if (typeof _ace === 'undefined') {\n this.mode = 'text';\n console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.');\n }\n } // determine theme\n\n\n this.theme = options.theme || DEFAULT_THEME;\n\n if (this.theme === DEFAULT_THEME && _ace) {\n Object(tryRequireThemeJsonEditor[\"tryRequireThemeJsonEditor\"])();\n }\n\n if (options.onTextSelectionChange) {\n this.onTextSelectionChange(options.onTextSelectionChange);\n }\n\n var me = this;\n this.container = container;\n this.dom = {};\n this.aceEditor = undefined; // ace code editor\n\n this.textarea = undefined; // plain text editor (fallback when Ace is not available)\n\n this.validateSchema = null;\n this.annotations = [];\n this.lastSchemaErrors = undefined; // create a debounced validate function\n\n this._debouncedValidate = Object(util[\"debounce\"])(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\n this.width = container.clientWidth;\n this.height = container.clientHeight;\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\n\n this.frame.onclick = function (event) {\n // prevent default submit action when the editor is located inside a form\n event.preventDefault();\n };\n\n this.frame.onkeydown = function (event) {\n me._onKeyDown(event);\n }; // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker[\"a\" /* FocusTracker */](focusTrackerConfig);\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-outer';\n\n if (this.options.mainMenuBar) {\n Object(util[\"addClassName\"])(this.content, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create format button\n\n var buttonFormat = document.createElement('button');\n buttonFormat.type = 'button';\n buttonFormat.className = 'jsoneditor-format';\n buttonFormat.title = Object(i18n[\"c\" /* translate */])('formatTitle');\n this.menu.appendChild(buttonFormat);\n\n buttonFormat.onclick = function () {\n try {\n me.format();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create compact button\n\n\n var buttonCompact = document.createElement('button');\n buttonCompact.type = 'button';\n buttonCompact.className = 'jsoneditor-compact';\n buttonCompact.title = Object(i18n[\"c\" /* translate */])('compactTitle');\n this.menu.appendChild(buttonCompact);\n\n buttonCompact.onclick = function () {\n try {\n me.compact();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create sort button\n\n\n if (this.options.enableSort) {\n var _sort = document.createElement('button');\n\n _sort.type = 'button';\n _sort.className = 'jsoneditor-sort';\n _sort.title = Object(i18n[\"c\" /* translate */])('sortTitleShort');\n\n _sort.onclick = function () {\n me._showSortModal();\n };\n\n this.menu.appendChild(_sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = Object(i18n[\"c\" /* translate */])('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n me._showTransformModal();\n };\n\n this.menu.appendChild(transform);\n } // create repair button\n\n\n var buttonRepair = document.createElement('button');\n buttonRepair.type = 'button';\n buttonRepair.className = 'jsoneditor-repair';\n buttonRepair.title = Object(i18n[\"c\" /* translate */])('repairTitle');\n this.menu.appendChild(buttonRepair);\n\n buttonRepair.onclick = function () {\n try {\n me.repair();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create undo/redo buttons\n\n\n if (this.mode === 'code') {\n // create undo button\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = Object(i18n[\"c\" /* translate */])('undo');\n\n undo.onclick = function () {\n _this.aceEditor.getSession().getUndoManager().undo();\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = Object(i18n[\"c\" /* translate */])('redo');\n\n redo.onclick = function () {\n _this.aceEditor.getSession().getUndoManager().redo();\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo;\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n this.modeSwitcher = new ModeSwitcher[\"a\" /* ModeSwitcher */](this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n me.setMode(mode);\n me.modeSwitcher.focus();\n });\n }\n\n if (this.mode === 'code') {\n var poweredBy = document.createElement('a');\n poweredBy.appendChild(document.createTextNode('powered by ace'));\n poweredBy.href = 'https://ace.c9.io/';\n poweredBy.target = '_blank';\n poweredBy.className = 'jsoneditor-poweredBy';\n\n poweredBy.onclick = function () {\n // TODO: this anchor falls below the margin of the content,\n // therefore the normal a.href does not work. We use a click event\n // for now, but this should be fixed.\n window.open(poweredBy.href, poweredBy.target, 'noopener');\n };\n\n this.menu.appendChild(poweredBy);\n }\n }\n\n var emptyNode = {};\n var isReadOnly = this.options.onEditable && _typeof(this.options.onEditable === 'function') && !this.options.onEditable(emptyNode);\n this.frame.appendChild(this.content);\n this.container.appendChild(this.frame);\n\n if (this.mode === 'code') {\n this.editorDom = document.createElement('div');\n this.editorDom.style.height = '100%'; // TODO: move to css\n\n this.editorDom.style.width = '100%'; // TODO: move to css\n\n this.content.appendChild(this.editorDom);\n\n var aceEditor = _ace.edit(this.editorDom);\n\n var aceSession = aceEditor.getSession();\n aceEditor.$blockScrolling = Infinity;\n aceEditor.setTheme(this.theme);\n aceEditor.setOptions({\n readOnly: isReadOnly\n });\n aceEditor.setShowPrintMargin(false);\n aceEditor.setFontSize('13px');\n aceSession.setMode('ace/mode/json');\n aceSession.setTabSize(this.indentation);\n aceSession.setUseSoftTabs(true);\n aceSession.setUseWrapMode(true); // replace ace setAnnotations with custom function that also covers jsoneditor annotations\n\n var originalSetAnnotations = aceSession.setAnnotations;\n\n aceSession.setAnnotations = function (annotations) {\n originalSetAnnotations.call(this, annotations && annotations.length ? annotations : me.annotations);\n }; // disable Ctrl+L quickkey of Ace (is used by the browser to select the address bar)\n\n\n aceEditor.commands.bindKey('Ctrl-L', null);\n aceEditor.commands.bindKey('Command-L', null); // disable the quickkeys we want to use for Format and Compact\n\n aceEditor.commands.bindKey('Ctrl-\\\\', null);\n aceEditor.commands.bindKey('Command-\\\\', null);\n aceEditor.commands.bindKey('Ctrl-Shift-\\\\', null);\n aceEditor.commands.bindKey('Command-Shift-\\\\', null);\n this.aceEditor = aceEditor; // register onchange event\n\n aceEditor.on('change', this._onChange.bind(this));\n aceEditor.on('changeSelection', this._onSelect.bind(this));\n } else {\n // load a plain text textarea\n var textarea = document.createElement('textarea');\n textarea.className = 'jsoneditor-text';\n textarea.spellcheck = false;\n this.content.appendChild(textarea);\n this.textarea = textarea;\n this.textarea.readOnly = isReadOnly; // register onchange event\n\n if (this.textarea.oninput === null) {\n this.textarea.oninput = this._onChange.bind(this);\n } else {\n // oninput is undefined. For IE8-\n this.textarea.onchange = this._onChange.bind(this);\n }\n\n textarea.onselect = this._onSelect.bind(this);\n textarea.onmousedown = this._onMouseDown.bind(this);\n textarea.onblur = this._onBlur.bind(this);\n }\n\n this._updateHistoryButtons();\n\n this.errorTable = new ErrorTable[\"a\" /* ErrorTable */]({\n errorTableVisible: this.mode === 'text',\n onToggleVisibility: function onToggleVisibility() {\n me.validate();\n },\n onFocusLine: function onFocusLine(line) {\n me.isFocused = true;\n\n if (!isNaN(line)) {\n me.setTextSelection({\n row: line,\n column: 1\n }, {\n row: line,\n column: 1000\n });\n }\n },\n onChangeHeight: function onChangeHeight(height) {\n // TODO: change CSS to using flex box, remove setting height using JavaScript\n var statusBarHeight = me.dom.statusBar ? me.dom.statusBar.clientHeight : 0;\n var totalHeight = height + statusBarHeight + 1;\n me.content.style.marginBottom = -totalHeight + 'px';\n me.content.style.paddingBottom = totalHeight + 'px';\n }\n });\n this.frame.appendChild(this.errorTable.getErrorTable());\n\n if (options.statusBar) {\n Object(util[\"addClassName\"])(this.content, 'has-status-bar');\n this.curserInfoElements = {};\n var statusBar = document.createElement('div');\n this.dom.statusBar = statusBar;\n statusBar.className = 'jsoneditor-statusbar';\n this.frame.appendChild(statusBar);\n var lnLabel = document.createElement('span');\n lnLabel.className = 'jsoneditor-curserinfo-label';\n lnLabel.innerText = 'Ln:';\n var lnVal = document.createElement('span');\n lnVal.className = 'jsoneditor-curserinfo-val';\n lnVal.innerText = '1';\n statusBar.appendChild(lnLabel);\n statusBar.appendChild(lnVal);\n var colLabel = document.createElement('span');\n colLabel.className = 'jsoneditor-curserinfo-label';\n colLabel.innerText = 'Col:';\n var colVal = document.createElement('span');\n colVal.className = 'jsoneditor-curserinfo-val';\n colVal.innerText = '1';\n statusBar.appendChild(colLabel);\n statusBar.appendChild(colVal);\n this.curserInfoElements.colVal = colVal;\n this.curserInfoElements.lnVal = lnVal;\n var countLabel = document.createElement('span');\n countLabel.className = 'jsoneditor-curserinfo-label';\n countLabel.innerText = 'characters selected';\n countLabel.style.display = 'none';\n var countVal = document.createElement('span');\n countVal.className = 'jsoneditor-curserinfo-count';\n countVal.innerText = '0';\n countVal.style.display = 'none';\n this.curserInfoElements.countLabel = countLabel;\n this.curserInfoElements.countVal = countVal;\n statusBar.appendChild(countVal);\n statusBar.appendChild(countLabel);\n statusBar.appendChild(this.errorTable.getErrorCounter());\n statusBar.appendChild(this.errorTable.getWarningIcon());\n statusBar.appendChild(this.errorTable.getErrorIcon());\n }\n\n this.setSchema(this.options.schema, this.options.schemaRefs);\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\ntextmode._onChange = function () {\n var _this2 = this;\n\n if (this.onChangeDisabled) {\n return;\n } // enable/disable undo/redo buttons\n\n\n setTimeout(function () {\n return _this2._updateHistoryButtons();\n }); // validate JSON schema (if configured)\n\n this._debouncedValidate(); // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n }\n};\n\ntextmode._updateHistoryButtons = function () {\n if (this.aceEditor && this.dom.undo && this.dom.redo) {\n var undoManager = this.aceEditor.getSession().getUndoManager();\n\n if (undoManager && undoManager.hasUndo && undoManager.hasRedo) {\n this.dom.undo.disabled = !undoManager.hasUndo();\n this.dom.redo.disabled = !undoManager.hasRedo();\n }\n }\n};\n/**\n * Open a sort modal\n * @private\n */\n\n\ntextmode._showSortModal = function () {\n var me = this;\n var container = this.options.modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */];\n var json = this.get();\n\n function onSort(sortedBy) {\n if (Array.isArray(json)) {\n var sortedJson = Object(util[\"sort\"])(json, sortedBy.path, sortedBy.direction);\n me.sortedBy = sortedBy;\n me.update(sortedJson);\n }\n\n if (Object(util[\"isObject\"])(json)) {\n var _sortedJson = Object(util[\"sortObjectKeys\"])(json, sortedBy.direction);\n\n me.sortedBy = sortedBy;\n me.update(_sortedJson);\n }\n }\n\n Object(showSortModal[\"showSortModal\"])(container, json, onSort, me.sortedBy);\n};\n/**\n * Open a transform modal\n * @private\n */\n\n\ntextmode._showTransformModal = function () {\n var _this3 = this;\n\n var _this$options = this.options,\n modalAnchor = _this$options.modalAnchor,\n createQuery = _this$options.createQuery,\n executeQuery = _this$options.executeQuery,\n queryDescription = _this$options.queryDescription;\n var json = this.get();\n Object(showTransformModal[\"showTransformModal\"])({\n container: modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */],\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: createQuery,\n executeQuery: executeQuery,\n onTransform: function onTransform(query) {\n var updatedJson = executeQuery(json, query);\n\n _this3.update(updatedJson);\n }\n });\n};\n/**\n * Handle text selection\n * Calculates the cursor position and selection range and updates menu\n * @private\n */\n\n\ntextmode._onSelect = function () {\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for keydown. Handles shortcut keys\n * @param {Event} event\n * @private\n */\n\n\ntextmode._onKeyDown = function (event) {\n var keynum = event.which || event.keyCode;\n var handled = false;\n\n if (keynum === 220 && event.ctrlKey) {\n if (event.shiftKey) {\n // Ctrl+Shift+\\\n this.compact();\n\n this._onChange();\n } else {\n // Ctrl+\\\n this.format();\n\n this._onChange();\n }\n\n handled = true;\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for mousedown.\n * @private\n */\n\n\ntextmode._onMouseDown = function () {\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for blur.\n * @private\n */\n\n\ntextmode._onBlur = function () {\n var me = this; // this allows to avoid blur when clicking inner elements (like the errors panel)\n // just make sure to set the isFocused to true on the inner element onclick callback\n\n setTimeout(function () {\n if (!me.isFocused) {\n me._updateCursorInfo();\n\n me._emitSelectionChange();\n }\n\n me.isFocused = false;\n });\n};\n/**\n * Update the cursor info and the status bar, if presented\n */\n\n\ntextmode._updateCursorInfo = function () {\n var me = this;\n var line, col, count;\n\n if (this.textarea) {\n setTimeout(function () {\n // this to verify we get the most updated textarea cursor selection\n var selectionRange = Object(util[\"getInputSelection\"])(me.textarea);\n\n if (selectionRange.startIndex !== selectionRange.endIndex) {\n count = selectionRange.endIndex - selectionRange.startIndex;\n }\n\n if (count && me.cursorInfo && me.cursorInfo.line === selectionRange.end.row && me.cursorInfo.column === selectionRange.end.column) {\n line = selectionRange.start.row;\n col = selectionRange.start.column;\n } else {\n line = selectionRange.end.row;\n col = selectionRange.end.column;\n }\n\n me.cursorInfo = {\n line: line,\n column: col,\n count: count\n };\n\n if (me.options.statusBar) {\n updateDisplay();\n }\n }, 0);\n } else if (this.aceEditor && this.curserInfoElements) {\n var curserPos = this.aceEditor.getCursorPosition();\n var selectedText = this.aceEditor.getSelectedText();\n line = curserPos.row + 1;\n col = curserPos.column + 1;\n count = selectedText.length;\n me.cursorInfo = {\n line: line,\n column: col,\n count: count\n };\n\n if (this.options.statusBar) {\n updateDisplay();\n }\n }\n\n function updateDisplay() {\n if (me.curserInfoElements.countVal.innerText !== count) {\n me.curserInfoElements.countVal.innerText = count;\n me.curserInfoElements.countVal.style.display = count ? 'inline' : 'none';\n me.curserInfoElements.countLabel.style.display = count ? 'inline' : 'none';\n }\n\n me.curserInfoElements.lnVal.innerText = line;\n me.curserInfoElements.colVal.innerText = col;\n }\n};\n/**\n * emits selection change callback, if given\n * @private\n */\n\n\ntextmode._emitSelectionChange = function () {\n if (this._selectionChangedHandler) {\n var currentSelection = this.getTextSelection();\n\n this._selectionChangedHandler(currentSelection.start, currentSelection.end, currentSelection.text);\n }\n};\n/**\n * refresh ERROR annotations state\n * error annotations are handled by the ace json mode (ace/mode/json)\n * validation annotations are handled by this mode\n * therefore in order to refresh we send only the annotations of error type in order to maintain its state\n * @private\n */\n\n\ntextmode._refreshAnnotations = function () {\n var session = this.aceEditor && this.aceEditor.getSession();\n\n if (session) {\n var errEnnotations = session.getAnnotations().filter(function (annotation) {\n return annotation.type === 'error';\n });\n session.setAnnotations(errEnnotations);\n }\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\ntextmode.destroy = function () {\n // remove old ace editor\n if (this.aceEditor) {\n this.aceEditor.destroy();\n this.aceEditor = null;\n }\n\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n }\n\n this.textarea = null;\n this._debouncedValidate = null; // Removing the FocusTracker set to track the editor's focus event\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Compact the code in the text editor\n */\n\n\ntextmode.compact = function () {\n var json = this.get();\n var text = JSON.stringify(json);\n this.updateText(text);\n};\n/**\n * Format the code in the text editor\n */\n\n\ntextmode.format = function () {\n var json = this.get();\n var text = JSON.stringify(json, null, this.indentation);\n this.updateText(text);\n};\n/**\n * Repair the code in the text editor\n */\n\n\ntextmode.repair = function () {\n var text = this.getText();\n\n try {\n var repairedText = simpleJsonRepair_min_default()(text);\n this.updateText(repairedText);\n } catch (err) {// repair was not successful, do nothing\n }\n};\n/**\n * Set focus to the formatter\n */\n\n\ntextmode.focus = function () {\n if (this.textarea) {\n this.textarea.focus();\n }\n\n if (this.aceEditor) {\n this.aceEditor.focus();\n }\n};\n/**\n * Resize the formatter\n */\n\n\ntextmode.resize = function () {\n if (this.aceEditor) {\n var force = false;\n this.aceEditor.resize(force);\n }\n};\n/**\n * Set json data in the formatter\n * @param {*} json\n */\n\n\ntextmode.set = function (json) {\n this.setText(JSON.stringify(json, null, this.indentation));\n};\n/**\n * Update data. Same as calling `set` in text/code mode.\n * @param {*} json\n */\n\n\ntextmode.update = function (json) {\n this.updateText(JSON.stringify(json, null, this.indentation));\n};\n/**\n * Get json data from the formatter\n * @return {*} json\n */\n\n\ntextmode.get = function () {\n var text = this.getText();\n return Object(util[\"parse\"])(text); // this can throw an error\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\ntextmode.getText = function () {\n if (this.textarea) {\n return this.textarea.value;\n }\n\n if (this.aceEditor) {\n return this.aceEditor.getValue();\n }\n\n return '';\n};\n/**\n * Set the text contents of the editor and optionally clear the history\n * @param {String} jsonText\n * @param {boolean} clearHistory Only applicable for mode 'code'\n * @private\n */\n\n\ntextmode._setText = function (jsonText, clearHistory) {\n var _this4 = this;\n\n var text = this.options.escapeUnicode === true ? Object(util[\"escapeUnicodeChars\"])(jsonText) : jsonText;\n\n if (this.textarea) {\n this.textarea.value = text;\n }\n\n if (this.aceEditor) {\n // prevent emitting onChange events while setting new text\n this.onChangeDisabled = true;\n this.aceEditor.setValue(text, -1);\n this.onChangeDisabled = false;\n\n if (clearHistory) {\n // prevent initial undo action clearing the initial contents\n var me = this;\n setTimeout(function () {\n if (me.aceEditor) {\n me.aceEditor.session.getUndoManager().reset();\n }\n });\n }\n\n setTimeout(function () {\n return _this4._updateHistoryButtons();\n });\n } // validate JSON schema\n\n\n this._debouncedValidate();\n};\n/**\n * Set the text contents of the editor\n * @param {String} jsonText\n */\n\n\ntextmode.setText = function (jsonText) {\n this._setText(jsonText, true);\n};\n/**\n * Update the text contents\n * @param {string} jsonText\n */\n\n\ntextmode.updateText = function (jsonText) {\n // don't update if there are no changes\n if (this.getText() === jsonText) {\n return;\n }\n\n this._setText(jsonText, false);\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\ntextmode.validate = function () {\n var _this5 = this;\n\n var schemaErrors = [];\n var parseErrors = [];\n var json;\n\n try {\n json = this.get(); // this can fail when there is no valid json\n // execute JSON schema validation (ajv)\n\n if (this.validateSchema) {\n var valid = this.validateSchema(json);\n\n if (!valid) {\n schemaErrors = this.validateSchema.errors.map(function (error) {\n error.type = 'validation';\n return Object(util[\"improveSchemaError\"])(error);\n });\n }\n } // execute custom validation and after than merge and render all errors\n // TODO: implement a better mechanism for only using the last validation action\n\n\n this.validationSequence = (this.validationSequence || 0) + 1;\n var me = this;\n var seq = this.validationSequence;\n validateCustom(json, this.options.onValidate).then(function (customValidationErrors) {\n // only apply when there was no other validation started whilst resolving async results\n if (seq === me.validationSequence) {\n var errors = schemaErrors.concat(parseErrors).concat(customValidationErrors);\n\n me._renderErrors(errors);\n\n if (typeof _this5.options.onValidationError === 'function') {\n if (Object(util[\"isValidationErrorChanged\"])(errors, _this5.lastSchemaErrors)) {\n _this5.options.onValidationError.call(_this5, errors);\n }\n\n _this5.lastSchemaErrors = errors;\n }\n }\n })[\"catch\"](function (err) {\n console.error('Custom validation function did throw an error', err);\n });\n } catch (err) {\n if (this.getText()) {\n // try to extract the line number from the jsonlint error message\n var match = /\\w*line\\s*(\\d+)\\w*/g.exec(err.message);\n var line;\n\n if (match) {\n line = +match[1];\n }\n\n parseErrors = [{\n type: 'error',\n message: err.message.replace(/\\n/g, '<br>'),\n line: line\n }];\n }\n\n this._renderErrors(parseErrors);\n\n if (typeof this.options.onValidationError === 'function') {\n if (Object(util[\"isValidationErrorChanged\"])(parseErrors, this.lastSchemaErrors)) {\n this.options.onValidationError.call(this, parseErrors);\n }\n\n this.lastSchemaErrors = parseErrors;\n }\n }\n};\n\ntextmode._renderErrors = function (errors) {\n var jsonText = this.getText();\n var errorPaths = [];\n errors.reduce(function (acc, curr) {\n if (typeof curr.dataPath === 'string' && acc.indexOf(curr.dataPath) === -1) {\n acc.push(curr.dataPath);\n }\n\n return acc;\n }, errorPaths);\n var errorLocations = Object(util[\"getPositionForPath\"])(jsonText, errorPaths); // render annotations in Ace Editor (if any)\n\n if (this.aceEditor) {\n this.annotations = errorLocations.map(function (errLoc) {\n var validationErrors = errors.filter(function (err) {\n return err.dataPath === errLoc.path;\n });\n var message = validationErrors.map(function (err) {\n return err.message;\n }).join('\\n');\n\n if (message) {\n return {\n row: errLoc.line,\n column: errLoc.column,\n text: 'Schema validation error' + (validationErrors.length !== 1 ? 's' : '') + ': \\n' + message,\n type: 'warning',\n source: 'jsoneditor'\n };\n }\n\n return {};\n });\n\n this._refreshAnnotations();\n } // render errors in the errors table (if any)\n\n\n this.errorTable.setErrors(errors, errorLocations); // update the height of the ace editor\n\n if (this.aceEditor) {\n var force = false;\n this.aceEditor.resize(force);\n }\n};\n/**\n * Get the selection details\n * @returns {{start:{row:Number, column:Number},end:{row:Number, column:Number},text:String}}\n */\n\n\ntextmode.getTextSelection = function () {\n var selection = {};\n\n if (this.textarea) {\n var selectionRange = Object(util[\"getInputSelection\"])(this.textarea);\n\n if (this.cursorInfo && this.cursorInfo.line === selectionRange.end.row && this.cursorInfo.column === selectionRange.end.column) {\n // selection direction is bottom => up\n selection.start = selectionRange.end;\n selection.end = selectionRange.start;\n } else {\n selection = selectionRange;\n }\n\n return {\n start: selection.start,\n end: selection.end,\n text: this.textarea.value.substring(selectionRange.startIndex, selectionRange.endIndex)\n };\n }\n\n if (this.aceEditor) {\n var aceSelection = this.aceEditor.getSelection();\n var selectedText = this.aceEditor.getSelectedText();\n var range = aceSelection.getRange();\n var lead = aceSelection.getSelectionLead();\n\n if (lead.row === range.end.row && lead.column === range.end.column) {\n selection = range;\n } else {\n // selection direction is bottom => up\n selection.start = range.end;\n selection.end = range.start;\n }\n\n return {\n start: {\n row: selection.start.row + 1,\n column: selection.start.column + 1\n },\n end: {\n row: selection.end.row + 1,\n column: selection.end.column + 1\n },\n text: selectedText\n };\n }\n};\n/**\n * Callback registration for selection change\n * @param {selectionCallback} callback\n *\n * @callback selectionCallback\n */\n\n\ntextmode.onTextSelectionChange = function (callback) {\n if (typeof callback === 'function') {\n this._selectionChangedHandler = Object(util[\"debounce\"])(callback, this.DEBOUNCE_INTERVAL);\n }\n};\n/**\n * Set selection on editor's text\n * @param {{row:Number, column:Number}} startPos selection start position\n * @param {{row:Number, column:Number}} endPos selected end position\n */\n\n\ntextmode.setTextSelection = function (startPos, endPos) {\n if (!startPos || !endPos) return;\n\n if (this.textarea) {\n var startIndex = Object(util[\"getIndexForPosition\"])(this.textarea, startPos.row, startPos.column);\n var endIndex = Object(util[\"getIndexForPosition\"])(this.textarea, endPos.row, endPos.column);\n\n if (startIndex > -1 && endIndex > -1) {\n if (this.textarea.setSelectionRange) {\n this.textarea.focus();\n this.textarea.setSelectionRange(startIndex, endIndex);\n } else if (this.textarea.createTextRange) {\n // IE < 9\n var range = this.textarea.createTextRange();\n range.collapse(true);\n range.moveEnd('character', endIndex);\n range.moveStart('character', startIndex);\n range.select();\n }\n\n var rows = (this.textarea.value.match(/\\n/g) || []).length + 1;\n var lineHeight = this.textarea.scrollHeight / rows;\n var selectionScrollPos = startPos.row * lineHeight;\n this.textarea.scrollTop = selectionScrollPos > this.textarea.clientHeight ? selectionScrollPos - this.textarea.clientHeight / 2 : 0;\n }\n } else if (this.aceEditor) {\n var _range = {\n start: {\n row: startPos.row - 1,\n column: startPos.column - 1\n },\n end: {\n row: endPos.row - 1,\n column: endPos.column - 1\n }\n };\n this.aceEditor.selection.setRange(_range);\n this.aceEditor.scrollToLine(startPos.row - 1, true);\n }\n};\n\nfunction load() {\n try {\n this.format();\n } catch (err) {// in case of an error, just move on, failing formatting is not a big deal\n }\n} // define modes\n\n\nvar textModeMixins = [{\n mode: 'text',\n mixin: textmode,\n data: 'text',\n load: load\n}, {\n mode: 'code',\n mixin: textmode,\n data: 'text',\n load: load\n}];\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* Jison generated parser */\nvar jsonlint = function () {\n var parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"JSONString\": 3,\n \"STRING\": 4,\n \"JSONNumber\": 5,\n \"NUMBER\": 6,\n \"JSONNullLiteral\": 7,\n \"NULL\": 8,\n \"JSONBooleanLiteral\": 9,\n \"TRUE\": 10,\n \"FALSE\": 11,\n \"JSONText\": 12,\n \"JSONValue\": 13,\n \"EOF\": 14,\n \"JSONObject\": 15,\n \"JSONArray\": 16,\n \"{\": 17,\n \"}\": 18,\n \"JSONMemberList\": 19,\n \"JSONMember\": 20,\n \":\": 21,\n \",\": 22,\n \"[\": 23,\n \"]\": 24,\n \"JSONElementList\": 25,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 4: \"STRING\",\n 6: \"NUMBER\",\n 8: \"NULL\",\n 10: \"TRUE\",\n 11: \"FALSE\",\n 14: \"EOF\",\n 17: \"{\",\n 18: \"}\",\n 21: \":\",\n 22: \",\",\n 23: \"[\",\n 24: \"]\"\n },\n productions_: [0, [3, 1], [5, 1], [7, 1], [9, 1], [9, 1], [12, 2], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [15, 2], [15, 3], [20, 3], [19, 1], [19, 3], [16, 2], [16, 3], [25, 1], [25, 3]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n\n switch (yystate) {\n case 1:\n // replace escaped characters with actual character\n this.$ = yytext.replace(/\\\\(\\\\|\")/g, \"$\" + \"1\").replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\t/g, '\\t').replace(/\\\\v/g, '\\v').replace(/\\\\f/g, '\\f').replace(/\\\\b/g, '\\b');\n break;\n\n case 2:\n this.$ = Number(yytext);\n break;\n\n case 3:\n this.$ = null;\n break;\n\n case 4:\n this.$ = true;\n break;\n\n case 5:\n this.$ = false;\n break;\n\n case 6:\n return this.$ = $$[$0 - 1];\n break;\n\n case 13:\n this.$ = {};\n break;\n\n case 14:\n this.$ = $$[$0 - 1];\n break;\n\n case 15:\n this.$ = [$$[$0 - 2], $$[$0]];\n break;\n\n case 16:\n this.$ = {};\n this.$[$$[$0][0]] = $$[$0][1];\n break;\n\n case 17:\n this.$ = $$[$0 - 2];\n $$[$0 - 2][$$[$0][0]] = $$[$0][1];\n break;\n\n case 18:\n this.$ = [];\n break;\n\n case 19:\n this.$ = $$[$0 - 1];\n break;\n\n case 20:\n this.$ = [$$[$0]];\n break;\n\n case 21:\n this.$ = $$[$0 - 2];\n $$[$0 - 2].push($$[$0]);\n break;\n }\n },\n table: [{\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 12: 1,\n 13: 2,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 1: [3]\n }, {\n 14: [1, 16]\n }, {\n 14: [2, 7],\n 18: [2, 7],\n 22: [2, 7],\n 24: [2, 7]\n }, {\n 14: [2, 8],\n 18: [2, 8],\n 22: [2, 8],\n 24: [2, 8]\n }, {\n 14: [2, 9],\n 18: [2, 9],\n 22: [2, 9],\n 24: [2, 9]\n }, {\n 14: [2, 10],\n 18: [2, 10],\n 22: [2, 10],\n 24: [2, 10]\n }, {\n 14: [2, 11],\n 18: [2, 11],\n 22: [2, 11],\n 24: [2, 11]\n }, {\n 14: [2, 12],\n 18: [2, 12],\n 22: [2, 12],\n 24: [2, 12]\n }, {\n 14: [2, 3],\n 18: [2, 3],\n 22: [2, 3],\n 24: [2, 3]\n }, {\n 14: [2, 4],\n 18: [2, 4],\n 22: [2, 4],\n 24: [2, 4]\n }, {\n 14: [2, 5],\n 18: [2, 5],\n 22: [2, 5],\n 24: [2, 5]\n }, {\n 14: [2, 1],\n 18: [2, 1],\n 21: [2, 1],\n 22: [2, 1],\n 24: [2, 1]\n }, {\n 14: [2, 2],\n 18: [2, 2],\n 22: [2, 2],\n 24: [2, 2]\n }, {\n 3: 20,\n 4: [1, 12],\n 18: [1, 17],\n 19: 18,\n 20: 19\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 23,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15],\n 24: [1, 21],\n 25: 22\n }, {\n 1: [2, 6]\n }, {\n 14: [2, 13],\n 18: [2, 13],\n 22: [2, 13],\n 24: [2, 13]\n }, {\n 18: [1, 24],\n 22: [1, 25]\n }, {\n 18: [2, 16],\n 22: [2, 16]\n }, {\n 21: [1, 26]\n }, {\n 14: [2, 18],\n 18: [2, 18],\n 22: [2, 18],\n 24: [2, 18]\n }, {\n 22: [1, 28],\n 24: [1, 27]\n }, {\n 22: [2, 20],\n 24: [2, 20]\n }, {\n 14: [2, 14],\n 18: [2, 14],\n 22: [2, 14],\n 24: [2, 14]\n }, {\n 3: 20,\n 4: [1, 12],\n 20: 29\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 30,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 14: [2, 19],\n 18: [2, 19],\n 22: [2, 19],\n 24: [2, 19]\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 31,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 18: [2, 17],\n 22: [2, 17]\n }, {\n 18: [2, 15],\n 22: [2, 15]\n }, {\n 22: [2, 21],\n 24: [2, 21]\n }],\n defaultActions: {\n 16: [2, 6]\n },\n parseError: function parseError(str, hash) {\n throw new Error(str);\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n // semantic value stack\n lstack = [],\n // location stack\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n recovering = 0,\n TERROR = 2,\n EOF = 1; //this.reductionCount = this.shiftCount = 0;\n\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n if (typeof this.lexer.yylloc == 'undefined') this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n if (typeof this.yy.parseError === 'function') this.parseError = this.yy.parseError;\n\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n\n function lex() {\n var token;\n token = self.lexer.lex() || 1; // $end = 1\n // if token isn't its numeric value, convert\n\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token;\n }\n\n var symbol,\n preErrorSymbol,\n state,\n action,\n a,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n\n while (true) {\n // retreive state number from top of stack\n state = stack[stack.length - 1]; // use default actions if available\n\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol == null) symbol = lex(); // read action for current state and first input\n\n action = table[state] && table[state][symbol];\n } // handle parse error\n\n\n _handle_error: if (typeof action === 'undefined' || !action.length || !action[0]) {\n if (!recovering) {\n // Report error\n expected = [];\n\n for (p in table[state]) {\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n\n var errStr = '';\n\n if (this.lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(', ') + \", got '\" + this.terminals_[symbol] + \"'\";\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + \": Unexpected \" + (symbol == 1\n /*EOF*/\n ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n\n this.parseError(errStr, {\n text: this.lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: this.lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n } // just recovered from another error\n\n\n if (recovering == 3) {\n if (symbol == EOF) {\n throw new Error(errStr || 'Parsing halted.');\n } // discard current lookahead and grab another\n\n\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n symbol = lex();\n } // try to recover from error\n\n\n while (1) {\n // check for error recovery rule in this state\n if (TERROR.toString() in table[state]) {\n break;\n }\n\n if (state == 0) {\n throw new Error(errStr || 'Parsing halted.');\n }\n\n popStack(1);\n state = stack[stack.length - 1];\n }\n\n preErrorSymbol = symbol; // save the lookahead token\n\n symbol = TERROR; // insert generic error symbol as new lookahead\n\n state = stack[stack.length - 1];\n action = table[state] && table[state][TERROR];\n recovering = 3; // allow 3 real symbols to be shifted before reporting a new error\n } // this shouldn't happen, unless resolve defaults are off\n\n\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n\n switch (action[0]) {\n case 1:\n // shift\n //this.shiftCount++;\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]); // push state\n\n symbol = null;\n\n if (!preErrorSymbol) {\n // normal execution/no error\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0) recovering--;\n } else {\n // error just occurred, resume old lookahead f/ before error\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n\n break;\n\n case 2:\n // reduce\n //this.reductionCount++;\n len = this.productions_[action[1]][1]; // perform semantic action\n\n yyval.$ = vstack[vstack.length - len]; // default to $$ = $1\n // default location, uses first token for firsts, last for lasts\n\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n\n if (typeof r !== 'undefined') {\n return r;\n } // pop off stack\n\n\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n\n stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)\n\n vstack.push(yyval.$);\n lstack.push(yyval._$); // goto new state = table[STATE][NONTERMINAL]\n\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n\n case 3:\n // accept\n return true;\n }\n }\n\n return true;\n }\n };\n /* Jison generated lexer */\n\n var lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parseError) {\n this.yy.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n setInput: function setInput(input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n return this;\n },\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/\\n/);\n if (lines) this.yylineno++;\n this._input = this._input.slice(1);\n return ch;\n },\n unput: function unput(ch) {\n this._input = ch + this._input;\n return this;\n },\n more: function more() {\n this._more = true;\n return this;\n },\n less: function less(n) {\n this._input = this.match.slice(n) + this._input;\n },\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n upcomingInput: function upcomingInput() {\n var next = this.match;\n\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n\n if (!this._input) this.done = true;\n var token, match, tempMatch, index, col, lines;\n\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n\n var rules = this._currentRules();\n\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n\n if (match) {\n lines = match[0].match(/\\n.*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - 1 : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.yyleng = this.yytext.length;\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;else return;\n }\n\n if (this._input === \"\") {\n return this.EOF;\n } else {\n this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n lex: function lex() {\n var r = this.next();\n\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n popState: function popState() {\n return this.conditionStack.pop();\n },\n _currentRules: function _currentRules() {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n },\n topState: function topState() {\n return this.conditionStack[this.conditionStack.length - 2];\n },\n pushState: function begin(condition) {\n this.begin(condition);\n }\n };\n lexer.options = {};\n\n lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n\n switch ($avoiding_name_collisions) {\n case 0:\n /* skip whitespace */\n break;\n\n case 1:\n return 6;\n break;\n\n case 2:\n yy_.yytext = yy_.yytext.substr(1, yy_.yyleng - 2);\n return 4;\n break;\n\n case 3:\n return 17;\n break;\n\n case 4:\n return 18;\n break;\n\n case 5:\n return 23;\n break;\n\n case 6:\n return 24;\n break;\n\n case 7:\n return 22;\n break;\n\n case 8:\n return 21;\n break;\n\n case 9:\n return 10;\n break;\n\n case 10:\n return 11;\n break;\n\n case 11:\n return 8;\n break;\n\n case 12:\n return 14;\n break;\n\n case 13:\n return 'INVALID';\n break;\n }\n };\n\n lexer.rules = [/^(?:\\s+)/, /^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/, /^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/, /^(?:\\{)/, /^(?:\\})/, /^(?:\\[)/, /^(?:\\])/, /^(?:,)/, /^(?::)/, /^(?:true\\b)/, /^(?:false\\b)/, /^(?:null\\b)/, /^(?:$)/, /^(?:.)/];\n lexer.conditions = {\n \"INITIAL\": {\n \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],\n \"inclusive\": true\n }\n };\n ;\n return lexer;\n }();\n\n parser.lexer = lexer;\n return parser;\n}();\n\nif (true) {\n exports.parser = jsonlint;\n exports.parse = jsonlint.parse.bind(jsonlint);\n}\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nif (typeof Element !== 'undefined') {\n // Polyfill for array remove\n (function () {\n function polyfill(item) {\n if ('remove' in item) {\n return;\n }\n\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n if (this.parentNode !== undefined) {\n this.parentNode.removeChild(this);\n }\n }\n });\n }\n\n if (typeof window.Element !== 'undefined') {\n polyfill(window.Element.prototype);\n }\n\n if (typeof window.CharacterData !== 'undefined') {\n polyfill(window.CharacterData.prototype);\n }\n\n if (typeof window.DocumentType !== 'undefined') {\n polyfill(window.DocumentType.prototype);\n }\n })();\n} // simple polyfill for Array.findIndex\n\n\nif (!Array.prototype.findIndex) {\n // eslint-disable-next-line no-extend-native\n Object.defineProperty(Array.prototype, 'findIndex', {\n value: function value(predicate) {\n for (var i = 0; i < this.length; i++) {\n var element = this[i];\n\n if (predicate.call(this, element, i, this)) {\n return i;\n }\n }\n\n return -1;\n },\n configurable: true,\n writable: true\n });\n} // Polyfill for Array.find\n\n\nif (!Array.prototype.find) {\n // eslint-disable-next-line no-extend-native\n Object.defineProperty(Array.prototype, 'find', {\n value: function value(predicate) {\n var i = this.findIndex(predicate);\n return this[i];\n },\n configurable: true,\n writable: true\n });\n} // Polyfill for String.trim\n\n\nif (!String.prototype.trim) {\n // eslint-disable-next-line no-extend-native\n String.prototype.trim = function () {\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar escapedChars = {\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\'\n};\n\nvar A_CODE = 'a'.charCodeAt();\n\n\nexports.parse = function (source, _, options) {\n var pointers = {};\n var line = 0;\n var column = 0;\n var pos = 0;\n var bigint = options && options.bigint && typeof BigInt != 'undefined';\n return {\n data: _parse('', true),\n pointers: pointers\n };\n\n function _parse(ptr, topLevel) {\n whitespace();\n var data;\n map(ptr, 'value');\n var char = getChar();\n switch (char) {\n case 't': read('rue'); data = true; break;\n case 'f': read('alse'); data = false; break;\n case 'n': read('ull'); data = null; break;\n case '\"': data = parseString(); break;\n case '[': data = parseArray(ptr); break;\n case '{': data = parseObject(ptr); break;\n default:\n backChar();\n if ('-0123456789'.indexOf(char) >= 0)\n data = parseNumber();\n else\n unexpectedToken();\n }\n map(ptr, 'valueEnd');\n whitespace();\n if (topLevel && pos < source.length) unexpectedToken();\n return data;\n }\n\n function whitespace() {\n loop:\n while (pos < source.length) {\n switch (source[pos]) {\n case ' ': column++; break;\n case '\\t': column += 4; break;\n case '\\r': column = 0; break;\n case '\\n': column = 0; line++; break;\n default: break loop;\n }\n pos++;\n }\n }\n\n function parseString() {\n var str = '';\n var char;\n while (true) {\n char = getChar();\n if (char == '\"') {\n break;\n } else if (char == '\\\\') {\n char = getChar();\n if (char in escapedChars)\n str += escapedChars[char];\n else if (char == 'u')\n str += getCharCode();\n else\n wasUnexpectedToken();\n } else {\n str += char;\n }\n }\n return str;\n }\n\n function parseNumber() {\n var numStr = '';\n var integer = true;\n if (source[pos] == '-') numStr += getChar();\n\n numStr += source[pos] == '0'\n ? getChar()\n : getDigits();\n\n if (source[pos] == '.') {\n numStr += getChar() + getDigits();\n integer = false;\n }\n\n if (source[pos] == 'e' || source[pos] == 'E') {\n numStr += getChar();\n if (source[pos] == '+' || source[pos] == '-') numStr += getChar();\n numStr += getDigits();\n integer = false;\n }\n\n var result = +numStr;\n return bigint && integer && (result > Number.MAX_SAFE_INTEGER || result < Number.MIN_SAFE_INTEGER)\n ? BigInt(numStr)\n : result;\n }\n\n function parseArray(ptr) {\n whitespace();\n var arr = [];\n var i = 0;\n if (getChar() == ']') return arr;\n backChar();\n\n while (true) {\n var itemPtr = ptr + '/' + i;\n arr.push(_parse(itemPtr));\n whitespace();\n var char = getChar();\n if (char == ']') break;\n if (char != ',') wasUnexpectedToken();\n whitespace();\n i++;\n }\n return arr;\n }\n\n function parseObject(ptr) {\n whitespace();\n var obj = {};\n if (getChar() == '}') return obj;\n backChar();\n\n while (true) {\n var loc = getLoc();\n if (getChar() != '\"') wasUnexpectedToken();\n var key = parseString();\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n mapLoc(propPtr, 'key', loc);\n map(propPtr, 'keyEnd');\n whitespace();\n if (getChar() != ':') wasUnexpectedToken();\n whitespace();\n obj[key] = _parse(propPtr);\n whitespace();\n var char = getChar();\n if (char == '}') break;\n if (char != ',') wasUnexpectedToken();\n whitespace();\n }\n return obj;\n }\n\n function read(str) {\n for (var i=0; i<str.length; i++)\n if (getChar() !== str[i]) wasUnexpectedToken();\n }\n\n function getChar() {\n checkUnexpectedEnd();\n var char = source[pos];\n pos++;\n column++; // new line?\n return char;\n }\n\n function backChar() {\n pos--;\n column--;\n }\n\n function getCharCode() {\n var count = 4;\n var code = 0;\n while (count--) {\n code <<= 4;\n var char = getChar().toLowerCase();\n if (char >= 'a' && char <= 'f')\n code += char.charCodeAt() - A_CODE + 10;\n else if (char >= '0' && char <= '9')\n code += +char;\n else\n wasUnexpectedToken();\n }\n return String.fromCharCode(code);\n }\n\n function getDigits() {\n var digits = '';\n while (source[pos] >= '0' && source[pos] <= '9')\n digits += getChar();\n\n if (digits.length) return digits;\n checkUnexpectedEnd();\n unexpectedToken();\n }\n\n function map(ptr, prop) {\n mapLoc(ptr, prop, getLoc());\n }\n\n function mapLoc(ptr, prop, loc) {\n pointers[ptr] = pointers[ptr] || {};\n pointers[ptr][prop] = loc;\n }\n\n function getLoc() {\n return {\n line: line,\n column: column,\n pos: pos\n };\n }\n\n function unexpectedToken() {\n throw new SyntaxError('Unexpected token ' + source[pos] + ' in JSON at position ' + pos);\n }\n\n function wasUnexpectedToken() {\n backChar();\n unexpectedToken();\n }\n\n function checkUnexpectedEnd() {\n if (pos >= source.length)\n throw new SyntaxError('Unexpected end of JSON input');\n }\n};\n\n\nexports.stringify = function (data, _, options) {\n if (!validType(data)) return;\n var wsLine = 0;\n var wsPos, wsColumn;\n var whitespace = typeof options == 'object'\n ? options.space\n : options;\n switch (typeof whitespace) {\n case 'number':\n var len = whitespace > 10\n ? 10\n : whitespace < 0\n ? 0\n : Math.floor(whitespace);\n whitespace = len && repeat(len, ' ');\n wsPos = len;\n wsColumn = len;\n break;\n case 'string':\n whitespace = whitespace.slice(0, 10);\n wsPos = 0;\n wsColumn = 0;\n for (var j=0; j<whitespace.length; j++) {\n var char = whitespace[j];\n switch (char) {\n case ' ': wsColumn++; break;\n case '\\t': wsColumn += 4; break;\n case '\\r': wsColumn = 0; break;\n case '\\n': wsColumn = 0; wsLine++; break;\n default: throw new Error('whitespace characters not allowed in JSON');\n }\n wsPos++;\n }\n break;\n default:\n whitespace = undefined;\n }\n\n var json = '';\n var pointers = {};\n var line = 0;\n var column = 0;\n var pos = 0;\n var es6 = options && options.es6 && typeof Map == 'function';\n _stringify(data, 0, '');\n return {\n json: json,\n pointers: pointers\n };\n\n function _stringify(_data, lvl, ptr) {\n map(ptr, 'value');\n switch (typeof _data) {\n case 'number':\n case 'bigint':\n case 'boolean':\n out('' + _data); break;\n case 'string':\n out(quoted(_data)); break;\n case 'object':\n if (_data === null) {\n out('null');\n } else if (typeof _data.toJSON == 'function') {\n out(quoted(_data.toJSON()));\n } else if (Array.isArray(_data)) {\n stringifyArray();\n } else if (es6) {\n if (_data.constructor.BYTES_PER_ELEMENT)\n stringifyArray();\n else if (_data instanceof Map)\n stringifyMapSet();\n else if (_data instanceof Set)\n stringifyMapSet(true);\n else\n stringifyObject();\n } else {\n stringifyObject();\n }\n }\n map(ptr, 'valueEnd');\n\n function stringifyArray() {\n if (_data.length) {\n out('[');\n var itemLvl = lvl + 1;\n for (var i=0; i<_data.length; i++) {\n if (i) out(',');\n indent(itemLvl);\n var item = validType(_data[i]) ? _data[i] : null;\n var itemPtr = ptr + '/' + i;\n _stringify(item, itemLvl, itemPtr);\n }\n indent(lvl);\n out(']');\n } else {\n out('[]');\n }\n }\n\n function stringifyObject() {\n var keys = Object.keys(_data);\n if (keys.length) {\n out('{');\n var propLvl = lvl + 1;\n for (var i=0; i<keys.length; i++) {\n var key = keys[i];\n var value = _data[key];\n if (validType(value)) {\n if (i) out(',');\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n indent(propLvl);\n map(propPtr, 'key');\n out(quoted(key));\n map(propPtr, 'keyEnd');\n out(':');\n if (whitespace) out(' ');\n _stringify(value, propLvl, propPtr);\n }\n }\n indent(lvl);\n out('}');\n } else {\n out('{}');\n }\n }\n\n function stringifyMapSet(isSet) {\n if (_data.size) {\n out('{');\n var propLvl = lvl + 1;\n var first = true;\n var entries = _data.entries();\n var entry = entries.next();\n while (!entry.done) {\n var item = entry.value;\n var key = item[0];\n var value = isSet ? true : item[1];\n if (validType(value)) {\n if (!first) out(',');\n first = false;\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n indent(propLvl);\n map(propPtr, 'key');\n out(quoted(key));\n map(propPtr, 'keyEnd');\n out(':');\n if (whitespace) out(' ');\n _stringify(value, propLvl, propPtr);\n }\n entry = entries.next();\n }\n indent(lvl);\n out('}');\n } else {\n out('{}');\n }\n }\n }\n\n function out(str) {\n column += str.length;\n pos += str.length;\n json += str;\n }\n\n function indent(lvl) {\n if (whitespace) {\n json += '\\n' + repeat(lvl, whitespace);\n line++;\n column = 0;\n while (lvl--) {\n if (wsLine) {\n line += wsLine;\n column = wsColumn;\n } else {\n column += wsColumn;\n }\n pos += wsPos;\n }\n pos += 1; // \\n character\n }\n }\n\n function map(ptr, prop) {\n pointers[ptr] = pointers[ptr] || {};\n pointers[ptr][prop] = {\n line: line,\n column: column,\n pos: pos\n };\n }\n\n function repeat(n, str) {\n return Array(n + 1).join(str);\n }\n};\n\n\nvar VALID_TYPES = ['number', 'bigint', 'boolean', 'string', 'object'];\nfunction validType(data) {\n return VALID_TYPES.indexOf(typeof data) >= 0;\n}\n\n\nvar ESC_QUOTE = /\"|\\\\/g;\nvar ESC_B = /[\\b]/g;\nvar ESC_F = /\\f/g;\nvar ESC_N = /\\n/g;\nvar ESC_R = /\\r/g;\nvar ESC_T = /\\t/g;\nfunction quoted(str) {\n str = str.replace(ESC_QUOTE, '\\\\$&')\n .replace(ESC_F, '\\\\f')\n .replace(ESC_B, '\\\\b')\n .replace(ESC_N, '\\\\n')\n .replace(ESC_R, '\\\\r')\n .replace(ESC_T, '\\\\t');\n return '\"' + str + '\"';\n}\n\n\nvar ESC_0 = /~/g;\nvar ESC_1 = /\\//g;\nfunction escapeJsonPointer(str) {\n return str.replace(ESC_0, '~0')\n .replace(ESC_1, '~1');\n}\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"<literal>\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n } else {\n return node;\n }\n break;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n } else {\n return this._parseMultiselectList();\n }\n break;\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n } else {\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n }\n break;\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n } else {\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n }\n break;\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value === null ) {\n return null;\n } else if (isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n } else {\n return null;\n }\n break;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, <signature>]\n // The <signature> can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + currentSpec +\n \" but received type \" + actualType +\n \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})( false ? undefined : exports);\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.tryRequireThemeJsonEditor = function () {\n try {\n __webpack_require__(24);\n } catch (err) {\n console.error(err);\n }\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ace = __webpack_require__(16); // may be undefined in case of minimalist bundle\n\n\nvar VanillaPicker = __webpack_require__(13); // may be undefined in case of minimalist bundle\n\n\nvar _require = __webpack_require__(26),\n treeModeMixins = _require.treeModeMixins;\n\nvar _require2 = __webpack_require__(17),\n textModeMixins = _require2.textModeMixins;\n\nvar _require3 = __webpack_require__(27),\n previewModeMixins = _require3.previewModeMixins;\n\nvar _require4 = __webpack_require__(0),\n clear = _require4.clear,\n extend = _require4.extend,\n getInnerText = _require4.getInnerText,\n getInternetExplorerVersion = _require4.getInternetExplorerVersion,\n parse = _require4.parse;\n\nvar _require5 = __webpack_require__(25),\n tryRequireAjv = _require5.tryRequireAjv;\n\nvar _require6 = __webpack_require__(6),\n showTransformModal = _require6.showTransformModal;\n\nvar _require7 = __webpack_require__(5),\n showSortModal = _require7.showSortModal;\n\nvar Ajv = tryRequireAjv();\n\nif (typeof Promise === 'undefined') {\n console.error('Promise undefined. Please load a Promise polyfill in the browser in order to use JSONEditor');\n}\n/**\n * @constructor JSONEditor\n * @param {Element} container Container element\n * @param {Object} [options] Object with options. available options:\n * {String} mode Editor mode. Available values:\n * 'tree' (default), 'view',\n * 'form', 'text', and 'code'.\n * {function} onChange Callback method, triggered\n * on change of contents.\n * Does not pass the contents itself.\n * See also `onChangeJSON` and\n * `onChangeText`.\n * {function} onChangeJSON Callback method, triggered\n * in modes on change of contents,\n * passing the changed contents\n * as JSON.\n * Only applicable for modes\n * 'tree', 'view', and 'form'.\n * {function} onChangeText Callback method, triggered\n * in modes on change of contents,\n * passing the changed contents\n * as stringified JSON.\n * {function} onError Callback method, triggered\n * when an error occurs\n * {Boolean} search Enable search box.\n * True by default\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {Boolean} history Enable history (undo/redo).\n * True by default\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {String} name Field name for the root node.\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {Number} indentation Number of indentation\n * spaces. 4 by default.\n * Only applicable for\n * modes 'text' and 'code'\n * {boolean} escapeUnicode If true, unicode\n * characters are escaped.\n * false by default.\n * {boolean} sortObjectKeys If true, object keys are\n * sorted before display.\n * false by default.\n * {function} onSelectionChange Callback method,\n * triggered on node selection change\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {function} onTextSelectionChange Callback method,\n * triggered on text selection change\n * Only applicable for modes\n * {HTMLElement} modalAnchor The anchor element to apply an\n * overlay and display the modals in a\n * centered location.\n * Defaults to document.body\n * 'text' and 'code'\n * {function} onEvent Callback method, triggered\n * when an event occurs in\n * a JSON field or value.\n * Only applicable for\n * modes 'form', 'tree' and\n * 'view'\n * {function} onFocus Callback method, triggered\n * when the editor comes into focus,\n * passing an object {type, target},\n * Applicable for all modes\n * {function} onBlur Callback method, triggered\n * when the editor goes out of focus,\n * passing an object {type, target},\n * Applicable for all modes\n * {function} onClassName Callback method, triggered\n * when a Node DOM is rendered. Function returns\n * a css class name to be set on a node.\n * Only applicable for\n * modes 'form', 'tree' and\n * 'view'\n * {Number} maxVisibleChilds Number of children allowed for a node\n * in 'tree', 'view', or 'form' mode before\n * the \"show more/show all\" buttons appear.\n * 100 by default.\n *\n * @param {Object | undefined} json JSON object\n */\n\n\nfunction JSONEditor(container, options, json) {\n if (!(this instanceof JSONEditor)) {\n throw new Error('JSONEditor constructor called without \"new\".');\n } // check for unsupported browser (IE8 and older)\n\n\n var ieVersion = getInternetExplorerVersion();\n\n if (ieVersion !== -1 && ieVersion < 9) {\n throw new Error('Unsupported browser, IE9 or newer required. ' + 'Please install the newest version of your browser.');\n }\n\n if (options) {\n // check for deprecated options\n if (options.error) {\n console.warn('Option \"error\" has been renamed to \"onError\"');\n options.onError = options.error;\n delete options.error;\n }\n\n if (options.change) {\n console.warn('Option \"change\" has been renamed to \"onChange\"');\n options.onChange = options.change;\n delete options.change;\n }\n\n if (options.editable) {\n console.warn('Option \"editable\" has been renamed to \"onEditable\"');\n options.onEditable = options.editable;\n delete options.editable;\n } // warn if onChangeJSON is used when mode can be `text` or `code`\n\n\n if (options.onChangeJSON) {\n if (options.mode === 'text' || options.mode === 'code' || options.modes && (options.modes.indexOf('text') !== -1 || options.modes.indexOf('code') !== -1)) {\n console.warn('Option \"onChangeJSON\" is not applicable to modes \"text\" and \"code\". ' + 'Use \"onChangeText\" or \"onChange\" instead.');\n }\n } // validate options\n\n\n if (options) {\n Object.keys(options).forEach(function (option) {\n if (JSONEditor.VALID_OPTIONS.indexOf(option) === -1) {\n console.warn('Unknown option \"' + option + '\". This option will be ignored');\n }\n });\n }\n }\n\n if (arguments.length) {\n this._create(container, options, json);\n }\n}\n/**\n * Configuration for all registered modes. Example:\n * {\n * tree: {\n * mixin: TreeEditor,\n * data: 'json'\n * },\n * text: {\n * mixin: TextEditor,\n * data: 'text'\n * }\n * }\n *\n * @type { Object.<String, {mixin: Object, data: String} > }\n */\n\n\nJSONEditor.modes = {}; // debounce interval for JSON schema validation in milliseconds\n\nJSONEditor.prototype.DEBOUNCE_INTERVAL = 150;\nJSONEditor.VALID_OPTIONS = ['ajv', 'schema', 'schemaRefs', 'templates', 'ace', 'theme', 'autocomplete', 'onChange', 'onChangeJSON', 'onChangeText', 'onEditable', 'onError', 'onEvent', 'onModeChange', 'onNodeName', 'onValidate', 'onCreateMenu', 'onSelectionChange', 'onTextSelectionChange', 'onClassName', 'onFocus', 'onBlur', 'colorPicker', 'onColorPicker', 'timestampTag', 'timestampFormat', 'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation', 'sortObjectKeys', 'navigationBar', 'statusBar', 'mainMenuBar', 'languages', 'language', 'enableSort', 'enableTransform', 'limitDragging', 'maxVisibleChilds', 'onValidationError', 'modalAnchor', 'popupAnchor', 'createQuery', 'executeQuery', 'queryDescription'];\n/**\n * Create the JSONEditor\n * @param {Element} container Container element\n * @param {Object} [options] See description in constructor\n * @param {Object | undefined} json JSON object\n * @private\n */\n\nJSONEditor.prototype._create = function (container, options, json) {\n this.container = container;\n this.options = options || {};\n this.json = json || {};\n var mode = this.options.mode || this.options.modes && this.options.modes[0] || 'tree';\n this.setMode(mode);\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\nJSONEditor.prototype.destroy = function () {};\n/**\n * Set JSON object in editor\n * @param {Object | undefined} json JSON data\n */\n\n\nJSONEditor.prototype.set = function (json) {\n this.json = json;\n};\n/**\n * Get JSON from the editor\n * @returns {Object} json\n */\n\n\nJSONEditor.prototype.get = function () {\n return this.json;\n};\n/**\n * Set string containing JSON for the editor\n * @param {String | undefined} jsonText\n */\n\n\nJSONEditor.prototype.setText = function (jsonText) {\n this.json = parse(jsonText);\n};\n/**\n * Get stringified JSON contents from the editor\n * @returns {String} jsonText\n */\n\n\nJSONEditor.prototype.getText = function () {\n return JSON.stringify(this.json);\n};\n/**\n * Set a field name for the root node.\n * @param {String | undefined} name\n */\n\n\nJSONEditor.prototype.setName = function (name) {\n if (!this.options) {\n this.options = {};\n }\n\n this.options.name = name;\n};\n/**\n * Get the field name for the root node.\n * @return {String | undefined} name\n */\n\n\nJSONEditor.prototype.getName = function () {\n return this.options && this.options.name;\n};\n/**\n * Change the mode of the editor.\n * JSONEditor will be extended with all methods needed for the chosen mode.\n * @param {String} mode Available modes: 'tree' (default), 'view', 'form',\n * 'text', and 'code'.\n */\n\n\nJSONEditor.prototype.setMode = function (mode) {\n // if the mode is the same as current mode (and it's not the first time), do nothing.\n if (mode === this.options.mode && this.create) {\n return;\n }\n\n var container = this.container;\n var options = extend({}, this.options);\n var oldMode = options.mode;\n var data;\n var name;\n options.mode = mode;\n var config = JSONEditor.modes[mode];\n\n if (config) {\n try {\n var asText = config.data === 'text';\n name = this.getName();\n data = this[asText ? 'getText' : 'get'](); // get text or json\n\n this.destroy();\n clear(this);\n extend(this, config.mixin);\n this.create(container, options);\n this.setName(name);\n this[asText ? 'setText' : 'set'](data); // set text or json\n\n if (typeof config.load === 'function') {\n try {\n config.load.call(this);\n } catch (err) {\n console.error(err);\n }\n }\n\n if (typeof options.onModeChange === 'function' && mode !== oldMode) {\n try {\n options.onModeChange(mode, oldMode);\n } catch (err) {\n console.error(err);\n }\n }\n } catch (err) {\n this._onError(err);\n }\n } else {\n throw new Error('Unknown mode \"' + options.mode + '\"');\n }\n};\n/**\n * Get the current mode\n * @return {string}\n */\n\n\nJSONEditor.prototype.getMode = function () {\n return this.options.mode;\n};\n/**\n * Throw an error. If an error callback is configured in options.error, this\n * callback will be invoked. Else, a regular error is thrown.\n * @param {Error} err\n * @private\n */\n\n\nJSONEditor.prototype._onError = function (err) {\n if (this.options && typeof this.options.onError === 'function') {\n this.options.onError(err);\n } else {\n throw err;\n }\n};\n/**\n * Set a JSON schema for validation of the JSON object.\n * To remove the schema, call JSONEditor.setSchema(null)\n * @param {Object | null} schema\n * @param {Object.<string, Object>=} schemaRefs Schemas that are referenced using the `$ref` property from the JSON schema that are set in the `schema` option,\n + the object structure in the form of `{reference_key: schemaObject}`\n */\n\n\nJSONEditor.prototype.setSchema = function (schema, schemaRefs) {\n // compile a JSON schema validator if a JSON schema is provided\n if (schema) {\n var ajv;\n\n try {\n // grab ajv from options if provided, else create a new instance\n if (this.options.ajv) {\n ajv = this.options.ajv;\n } else {\n ajv = Ajv({\n allErrors: true,\n verbose: true,\n schemaId: 'auto',\n $data: true\n }); // support both draft-04 and draft-06 alongside the latest draft-07\n\n ajv.addMetaSchema(__webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv/lib/refs/json-schema-draft-04.json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())));\n ajv.addMetaSchema(__webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv/lib/refs/json-schema-draft-06.json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())));\n }\n } catch (err) {\n console.warn('Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.');\n }\n\n if (ajv) {\n if (schemaRefs) {\n for (var ref in schemaRefs) {\n ajv.removeSchema(ref); // When updating a schema - old refs has to be removed first\n\n if (schemaRefs[ref]) {\n ajv.addSchema(schemaRefs[ref], ref);\n }\n }\n\n this.options.schemaRefs = schemaRefs;\n }\n\n this.validateSchema = ajv.compile(schema); // add schema to the options, so that when switching to an other mode,\n // the set schema is not lost\n\n this.options.schema = schema; // validate now\n\n this.validate();\n }\n\n this.refresh(); // update DOM\n } else {\n // remove current schema\n this.validateSchema = null;\n this.options.schema = null;\n this.options.schemaRefs = null;\n this.validate(); // to clear current error messages\n\n this.refresh(); // update DOM\n }\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\nJSONEditor.prototype.validate = function () {// must be implemented by treemode and textmode\n};\n/**\n * Refresh the rendered contents\n */\n\n\nJSONEditor.prototype.refresh = function () {// can be implemented by treemode and textmode\n};\n/**\n * Register a plugin with one ore multiple modes for the JSON Editor.\n *\n * A mode is described as an object with properties:\n *\n * - `mode: String` The name of the mode.\n * - `mixin: Object` An object containing the mixin functions which\n * will be added to the JSONEditor. Must contain functions\n * create, get, getText, set, and setText. May have\n * additional functions.\n * When the JSONEditor switches to a mixin, all mixin\n * functions are added to the JSONEditor, and then\n * the function `create(container, options)` is executed.\n * - `data: 'text' | 'json'` The type of data that will be used to load the mixin.\n * - `[load: function]` An optional function called after the mixin\n * has been loaded.\n *\n * @param {Object | Array} mode A mode object or an array with multiple mode objects.\n */\n\n\nJSONEditor.registerMode = function (mode) {\n var i, prop;\n\n if (Array.isArray(mode)) {\n // multiple modes\n for (i = 0; i < mode.length; i++) {\n JSONEditor.registerMode(mode[i]);\n }\n } else {\n // validate the new mode\n if (!('mode' in mode)) throw new Error('Property \"mode\" missing');\n if (!('mixin' in mode)) throw new Error('Property \"mixin\" missing');\n if (!('data' in mode)) throw new Error('Property \"data\" missing');\n var name = mode.mode;\n\n if (name in JSONEditor.modes) {\n throw new Error('Mode \"' + name + '\" already registered');\n } // validate the mixin\n\n\n if (typeof mode.mixin.create !== 'function') {\n throw new Error('Required function \"create\" missing on mixin');\n }\n\n var reserved = ['setMode', 'registerMode', 'modes'];\n\n for (i = 0; i < reserved.length; i++) {\n prop = reserved[i];\n\n if (prop in mode.mixin) {\n throw new Error('Reserved property \"' + prop + '\" not allowed in mixin');\n }\n }\n\n JSONEditor.modes[name] = mode;\n }\n}; // register tree, text, and preview modes\n\n\nJSONEditor.registerMode(treeModeMixins);\nJSONEditor.registerMode(textModeMixins);\nJSONEditor.registerMode(previewModeMixins); // expose some of the libraries that can be used customized\n\nJSONEditor.ace = ace;\nJSONEditor.Ajv = Ajv;\nJSONEditor.VanillaPicker = VanillaPicker; // expose some utils (this is undocumented, unofficial)\n\nJSONEditor.showTransformModal = showTransformModal;\nJSONEditor.showSortModal = showSortModal;\nJSONEditor.getInnerText = getInnerText; // default export for TypeScript ES6 projects\n\nJSONEditor[\"default\"] = JSONEditor;\nmodule.exports = JSONEditor;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\n/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\nwindow.ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function (acequire, exports, module) {\n exports.isDark = false;\n exports.cssClass = 'ace-jsoneditor';\n exports.cssText = \".ace-jsoneditor .ace_gutter {\\nbackground: #ebebeb;\\ncolor: #333\\n}\\n\\n.ace-jsoneditor.ace_editor {\\nfont-family: \\\"dejavu sans mono\\\", \\\"droid sans mono\\\", consolas, monaco, \\\"lucida console\\\", \\\"courier new\\\", courier, monospace, sans-serif;\\nline-height: 1.3;\\nbackground-color: #fff;\\n}\\n.ace-jsoneditor .ace_print-margin {\\nwidth: 1px;\\nbackground: #e8e8e8\\n}\\n.ace-jsoneditor .ace_scroller {\\nbackground-color: #FFFFFF\\n}\\n.ace-jsoneditor .ace_text-layer {\\ncolor: gray\\n}\\n.ace-jsoneditor .ace_variable {\\ncolor: #1a1a1a\\n}\\n.ace-jsoneditor .ace_cursor {\\nborder-left: 2px solid #000000\\n}\\n.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\\nborder-left: 0px;\\nborder-bottom: 1px solid #000000\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_selection {\\nbackground: lightgray\\n}\\n.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\\nbox-shadow: 0 0 3px 0px #FFFFFF;\\nborder-radius: 2px\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_step {\\nbackground: rgb(255, 255, 0)\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_bracket {\\nmargin: -1px 0 0 -1px;\\nborder: 1px solid #BFBFBF\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_active-line {\\nbackground: #FFFBD1\\n}\\n.ace-jsoneditor .ace_gutter-active-line {\\nbackground-color : #dcdcdc\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_selected-word {\\nborder: 1px solid lightgray\\n}\\n.ace-jsoneditor .ace_invisible {\\ncolor: #BFBFBF\\n}\\n.ace-jsoneditor .ace_keyword,\\n.ace-jsoneditor .ace_meta,\\n.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\\ncolor: #AF956F\\n}\\n.ace-jsoneditor .ace_keyword.ace_operator {\\ncolor: #484848\\n}\\n.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\\ncolor: #96DC5F\\n}\\n.ace-jsoneditor .ace_constant.ace_language {\\ncolor: darkorange\\n}\\n.ace-jsoneditor .ace_constant.ace_numeric {\\ncolor: red\\n}\\n.ace-jsoneditor .ace_constant.ace_character.ace_entity {\\ncolor: #BF78CC\\n}\\n.ace-jsoneditor .ace_invalid {\\ncolor: #FFFFFF;\\nbackground-color: #FF002A;\\n}\\n.ace-jsoneditor .ace_fold {\\nbackground-color: #AF956F;\\nborder-color: #000000\\n}\\n.ace-jsoneditor .ace_storage,\\n.ace-jsoneditor .ace_support.ace_class,\\n.ace-jsoneditor .ace_support.ace_function,\\n.ace-jsoneditor .ace_support.ace_other,\\n.ace-jsoneditor .ace_support.ace_type {\\ncolor: #C52727\\n}\\n.ace-jsoneditor .ace_string {\\ncolor: green\\n}\\n.ace-jsoneditor .ace_comment {\\ncolor: #BCC8BA\\n}\\n.ace-jsoneditor .ace_entity.ace_name.ace_tag,\\n.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\\ncolor: #606060\\n}\\n.ace-jsoneditor .ace_markup.ace_underline {\\ntext-decoration: underline\\n}\\n.ace-jsoneditor .ace_indent-guide {\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y\\n}\";\n var dom = acequire('../lib/dom');\n dom.importCssString(exports.cssText, exports.cssClass);\n});\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.tryRequireAjv = function () {\n try {\n return __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n } catch (err) {// no problem... when we need Ajv we will throw a neat exception\n }\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"treeModeMixins\", function() { return /* binding */ treeModeMixins; });\n\n// CONCATENATED MODULE: ./src/js/autocomplete.js\n\n\nvar defaultFilterFunction = {\n start: function start(token, match, config) {\n return match.indexOf(token) === 0;\n },\n contain: function contain(token, match, config) {\n return match.indexOf(token) > -1;\n }\n};\nfunction autocomplete(config) {\n config = config || {};\n config.filter = config.filter || 'start';\n config.trigger = config.trigger || 'keydown';\n config.confirmKeys = config.confirmKeys || [39, 35, 9]; // right, end, tab\n\n config.caseSensitive = config.caseSensitive || false; // autocomplete case sensitive\n\n var fontSize = '';\n var fontFamily = '';\n var wrapper = document.createElement('div');\n wrapper.style.position = 'relative';\n wrapper.style.outline = '0';\n wrapper.style.border = '0';\n wrapper.style.margin = '0';\n wrapper.style.padding = '0';\n var dropDown = document.createElement('div');\n dropDown.className = 'autocomplete dropdown';\n dropDown.style.position = 'absolute';\n dropDown.style.visibility = 'hidden';\n var spacer;\n var leftSide; // <-- it will contain the leftSide part of the textfield (the bit that was already autocompleted)\n\n var createDropDownController = function createDropDownController(elem, rs) {\n var rows = [];\n var ix = 0;\n var oldIndex = -1; // TODO: move this styling in JS to SCSS\n\n var onMouseOver = function onMouseOver() {\n this.style.backgroundColor = '#ddd';\n };\n\n var onMouseOut = function onMouseOut() {\n this.style.backgroundColor = '';\n };\n\n var onMouseDown = function onMouseDown() {\n p.hide();\n p.onmouseselection(this.__hint, p.rs);\n };\n\n var p = {\n rs: rs,\n hide: function hide() {\n elem.style.visibility = 'hidden'; // rs.hideDropDown();\n },\n refresh: function refresh(token, array) {\n elem.style.visibility = 'hidden';\n ix = 0;\n elem.textContent = '';\n var vph = window.innerHeight || document.documentElement.clientHeight;\n var rect = elem.parentNode.getBoundingClientRect();\n var distanceToTop = rect.top - 6; // heuristic give 6px\n\n var distanceToBottom = vph - rect.bottom - 6; // distance from the browser border.\n\n rows = [];\n var filterFn = typeof config.filter === 'function' ? config.filter : defaultFilterFunction[config.filter];\n var filtered = !filterFn ? [] : array.filter(function (match) {\n return filterFn(config.caseSensitive ? token : token.toLowerCase(), config.caseSensitive ? match : match.toLowerCase(), config);\n });\n rows = filtered.map(function (row) {\n var divRow = document.createElement('div');\n divRow.className = 'item'; // divRow.style.color = config.color;\n\n divRow.onmouseover = onMouseOver;\n divRow.onmouseout = onMouseOut;\n divRow.onmousedown = onMouseDown;\n divRow.__hint = row;\n divRow.textContent = '';\n divRow.appendChild(document.createTextNode(row.substring(0, token.length)));\n var b = document.createElement('b');\n b.appendChild(document.createTextNode(row.substring(token.length)));\n divRow.appendChild(b);\n elem.appendChild(divRow);\n return divRow;\n });\n\n if (rows.length === 0) {\n return; // nothing to show.\n }\n\n if (rows.length === 1 && (token.toLowerCase() === rows[0].__hint.toLowerCase() && !config.caseSensitive || token === rows[0].__hint && config.caseSensitive)) {\n return; // do not show the dropDown if it has only one element which matches what we have just displayed.\n }\n\n if (rows.length < 2) return;\n p.highlight(0);\n\n if (distanceToTop > distanceToBottom * 3) {\n // Heuristic (only when the distance to the to top is 4 times more than distance to the bottom\n elem.style.maxHeight = distanceToTop + 'px'; // we display the dropDown on the top of the input text\n\n elem.style.top = '';\n elem.style.bottom = '100%';\n } else {\n elem.style.top = '100%';\n elem.style.bottom = '';\n elem.style.maxHeight = distanceToBottom + 'px';\n }\n\n elem.style.visibility = 'visible';\n },\n highlight: function highlight(index) {\n if (oldIndex !== -1 && rows[oldIndex]) {\n rows[oldIndex].className = 'item';\n }\n\n rows[index].className = 'item hover';\n oldIndex = index;\n },\n move: function move(step) {\n // moves the selection either up or down (unless it's not possible) step is either +1 or -1.\n if (elem.style.visibility === 'hidden') return ''; // nothing to move if there is no dropDown. (this happens if the user hits escape and then down or up)\n\n if (ix + step === -1 || ix + step === rows.length) return rows[ix].__hint; // NO CIRCULAR SCROLLING.\n\n ix += step;\n p.highlight(ix);\n return rows[ix].__hint; // txtShadow.value = uRows[uIndex].__hint ;\n },\n onmouseselection: function onmouseselection() {} // it will be overwritten.\n\n };\n return p;\n };\n\n function setEndOfContenteditable(contentEditableElement) {\n var range, selection;\n\n if (document.createRange) {\n // Firefox, Chrome, Opera, Safari, IE 9+\n range = document.createRange(); // Create a range (a range is a like the selection but invisible)\n\n range.selectNodeContents(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n selection = window.getSelection(); // get the selection object (allows you to change selection)\n\n selection.removeAllRanges(); // remove any selections already made\n\n selection.addRange(range); // make the range you have just created the visible selection\n } else if (document.selection) {\n // IE 8 and lower\n range = document.body.createTextRange(); // Create a range (a range is a like the selection but invisible)\n\n range.moveToElementText(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n range.select(); // Select the range (make it the visible selection\n }\n }\n\n function calculateWidthForText(text) {\n if (spacer === undefined) {\n // on first call only.\n spacer = document.createElement('span');\n spacer.style.visibility = 'hidden';\n spacer.style.position = 'fixed';\n spacer.style.outline = '0';\n spacer.style.margin = '0';\n spacer.style.padding = '0';\n spacer.style.border = '0';\n spacer.style.left = '0';\n spacer.style.whiteSpace = 'pre';\n spacer.style.fontSize = fontSize;\n spacer.style.fontFamily = fontFamily;\n spacer.style.fontWeight = 'normal';\n document.body.appendChild(spacer);\n }\n\n spacer.textContent = text;\n return spacer.getBoundingClientRect().right;\n }\n\n var rs = {\n onArrowDown: function onArrowDown() {},\n // defaults to no action.\n onArrowUp: function onArrowUp() {},\n // defaults to no action.\n onEnter: function onEnter() {},\n // defaults to no action.\n onTab: function onTab() {},\n // defaults to no action.\n startFrom: 0,\n options: [],\n element: null,\n elementHint: null,\n elementStyle: null,\n wrapper: wrapper,\n // Only to allow easy access to the HTML elements to the final user (possibly for minor customizations)\n show: function show(element, startPos, options) {\n var _this = this;\n\n this.startFrom = startPos;\n this.wrapper.remove();\n\n if (this.elementHint) {\n this.elementHint.remove();\n this.elementHint = null;\n }\n\n if (fontSize === '') {\n fontSize = window.getComputedStyle(element).getPropertyValue('font-size');\n }\n\n if (fontFamily === '') {\n fontFamily = window.getComputedStyle(element).getPropertyValue('font-family');\n }\n\n dropDown.style.marginLeft = '0';\n dropDown.style.marginTop = element.getBoundingClientRect().height + 'px';\n this.options = options.map(String);\n\n if (this.element !== element) {\n this.element = element;\n this.elementStyle = {\n zIndex: this.element.style.zIndex,\n position: this.element.style.position,\n backgroundColor: this.element.style.backgroundColor,\n borderColor: this.element.style.borderColor\n };\n }\n\n this.element.style.zIndex = 3;\n this.element.style.position = 'relative';\n this.element.style.backgroundColor = 'transparent';\n this.element.style.borderColor = 'transparent';\n this.elementHint = element.cloneNode();\n this.elementHint.className = 'autocomplete hint';\n this.elementHint.style.zIndex = 2;\n this.elementHint.style.position = 'absolute';\n\n this.elementHint.onfocus = function () {\n _this.element.focus();\n };\n\n if (this.element.addEventListener) {\n this.element.removeEventListener('keydown', keyDownHandler);\n this.element.addEventListener('keydown', keyDownHandler, false);\n this.element.removeEventListener('blur', onBlurHandler);\n this.element.addEventListener('blur', onBlurHandler, false);\n }\n\n wrapper.appendChild(this.elementHint);\n wrapper.appendChild(dropDown);\n element.parentElement.appendChild(wrapper);\n this.repaint(element);\n },\n setText: function setText(text) {\n this.element.innerText = text;\n },\n getText: function getText() {\n return this.element.innerText;\n },\n hideDropDown: function hideDropDown() {\n this.wrapper.remove();\n\n if (this.elementHint) {\n this.elementHint.remove();\n this.elementHint = null;\n dropDownController.hide();\n this.element.style.zIndex = this.elementStyle.zIndex;\n this.element.style.position = this.elementStyle.position;\n this.element.style.backgroundColor = this.elementStyle.backgroundColor;\n this.element.style.borderColor = this.elementStyle.borderColor;\n }\n },\n repaint: function repaint(element) {\n var text = element.innerText;\n text = text.replace('\\n', '');\n var optionsLength = this.options.length; // breaking text in leftSide and token.\n\n var token = text.substring(this.startFrom);\n leftSide = text.substring(0, this.startFrom);\n\n for (var i = 0; i < optionsLength; i++) {\n var opt = this.options[i];\n\n if (!config.caseSensitive && opt.toLowerCase().indexOf(token.toLowerCase()) === 0 || config.caseSensitive && opt.indexOf(token) === 0) {\n // <-- how about upperCase vs. lowercase\n this.elementHint.innerText = leftSide + token + opt.substring(token.length);\n this.elementHint.realInnerText = leftSide + opt;\n break;\n }\n } // moving the dropDown and refreshing it.\n\n\n dropDown.style.left = calculateWidthForText(leftSide) + 'px';\n dropDownController.refresh(token, this.options);\n this.elementHint.style.width = calculateWidthForText(this.elementHint.innerText) + 10 + 'px';\n var wasDropDownHidden = dropDown.style.visibility === 'hidden';\n\n if (!wasDropDownHidden) {\n this.elementHint.style.width = calculateWidthForText(this.elementHint.innerText) + dropDown.clientWidth + 'px';\n }\n }\n };\n var dropDownController = createDropDownController(dropDown, rs);\n\n var keyDownHandler = function (e) {\n // console.log(\"Keydown:\" + e.keyCode);\n e = e || window.event;\n var keyCode = e.keyCode;\n if (this.elementHint == null) return;\n\n if (keyCode === 33) {\n return;\n } // page up (do nothing)\n\n\n if (keyCode === 34) {\n return;\n } // page down (do nothing);\n\n\n if (keyCode === 27) {\n // escape\n rs.hideDropDown();\n rs.element.focus();\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n var text = this.element.innerText;\n text = text.replace('\\n', '');\n\n if (config.confirmKeys.indexOf(keyCode) >= 0) {\n // (autocomplete triggered)\n if (keyCode === 9) {\n if (this.elementHint.innerText.length === 0) {\n rs.onTab();\n }\n }\n\n if (this.elementHint.innerText.length > 0) {\n // if there is a hint\n if (this.element.innerText !== this.elementHint.realInnerText) {\n this.element.innerText = this.elementHint.realInnerText;\n rs.hideDropDown();\n setEndOfContenteditable(this.element);\n\n if (keyCode === 9) {\n rs.element.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n\n return;\n }\n\n if (keyCode === 13) {\n // enter (autocomplete triggered)\n if (this.elementHint.innerText.length === 0) {\n // if there is a hint\n rs.onEnter();\n } else {\n var wasDropDownHidden = dropDown.style.visibility === 'hidden';\n dropDownController.hide();\n\n if (wasDropDownHidden) {\n rs.hideDropDown();\n rs.element.focus();\n rs.onEnter();\n return;\n }\n\n this.element.innerText = this.elementHint.realInnerText;\n rs.hideDropDown();\n setEndOfContenteditable(this.element);\n e.preventDefault();\n e.stopPropagation();\n }\n\n return;\n }\n\n if (keyCode === 40) {\n // down\n var token = text.substring(this.startFrom);\n var m = dropDownController.move(+1);\n\n if (m === '') {\n rs.onArrowDown();\n }\n\n this.elementHint.innerText = leftSide + token + m.substring(token.length);\n this.elementHint.realInnerText = leftSide + m;\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (keyCode === 38) {\n // up\n var _token = text.substring(this.startFrom);\n\n var _m = dropDownController.move(-1);\n\n if (_m === '') {\n rs.onArrowUp();\n }\n\n this.elementHint.innerText = leftSide + _token + _m.substring(_token.length);\n this.elementHint.realInnerText = leftSide + _m;\n e.preventDefault();\n e.stopPropagation();\n }\n }.bind(rs);\n\n var onBlurHandler = function onBlurHandler(e) {\n rs.hideDropDown(); // console.log(\"Lost focus.\");\n };\n\n dropDownController.onmouseselection = function (text, rs) {\n rs.element.innerText = rs.elementHint.innerText = leftSide + text;\n rs.hideDropDown();\n window.setTimeout(function () {\n rs.element.focus();\n setEndOfContenteditable(rs.element);\n }, 1);\n };\n\n return rs;\n}\n// EXTERNAL MODULE: ./src/js/ContextMenu.js\nvar ContextMenu = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(8);\n\n// CONCATENATED MODULE: ./src/js/Highlighter.js\n\n/**\n * The highlighter can highlight/unhighlight a node, and\n * animate the visibility of a context menu.\n * @constructor Highlighter\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Highlighter = /*#__PURE__*/function () {\n function Highlighter() {\n _classCallCheck(this, Highlighter);\n\n this.locked = false;\n }\n /**\n * Hightlight given node and its childs\n * @param {Node} node\n */\n\n\n _createClass(Highlighter, [{\n key: \"highlight\",\n value: function highlight(node) {\n if (this.locked) {\n return;\n }\n\n if (this.node !== node) {\n // unhighlight current node\n if (this.node) {\n this.node.setHighlight(false);\n } // highlight new node\n\n\n this.node = node;\n this.node.setHighlight(true);\n } // cancel any current timeout\n\n\n this._cancelUnhighlight();\n }\n /**\n * Unhighlight currently highlighted node.\n * Will be done after a delay\n */\n\n }, {\n key: \"unhighlight\",\n value: function unhighlight() {\n if (this.locked) {\n return;\n }\n\n var me = this;\n\n if (this.node) {\n this._cancelUnhighlight(); // do the unhighlighting after a small delay, to prevent re-highlighting\n // the same node when moving from the drag-icon to the contextmenu-icon\n // or vice versa.\n\n\n this.unhighlightTimer = setTimeout(function () {\n me.node.setHighlight(false);\n me.node = undefined;\n me.unhighlightTimer = undefined;\n }, 0);\n }\n }\n /**\n * Cancel an unhighlight action (if before the timeout of the unhighlight action)\n * @private\n */\n\n }, {\n key: \"_cancelUnhighlight\",\n value: function _cancelUnhighlight() {\n if (this.unhighlightTimer) {\n clearTimeout(this.unhighlightTimer);\n this.unhighlightTimer = undefined;\n }\n }\n /**\n * Lock highlighting or unhighlighting nodes.\n * methods highlight and unhighlight do not work while locked.\n */\n\n }, {\n key: \"lock\",\n value: function lock() {\n this.locked = true;\n }\n /**\n * Unlock highlighting or unhighlighting nodes\n */\n\n }, {\n key: \"unlock\",\n value: function unlock() {\n this.locked = false;\n }\n }]);\n\n return Highlighter;\n}();\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(9);\n\n// EXTERNAL MODULE: ./node_modules/javascript-natural-sort/naturalSort.js\nvar naturalSort = __webpack_require__(12);\nvar naturalSort_default = /*#__PURE__*/__webpack_require__.n(naturalSort);\n\n// EXTERNAL MODULE: ./src/js/createAbsoluteAnchor.js\nvar createAbsoluteAnchor = __webpack_require__(11);\n\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/js/appendNodeFactory.js\n\n\n\n\n\n/**\n * A factory function to create an AppendNode, which depends on a Node\n * @param {Node} Node\n */\n\nfunction appendNodeFactory(Node) {\n /**\n * @constructor AppendNode\n * @extends Node\n * @param {TreeEditor} editor\n * Create a new AppendNode. This is a special node which is created at the\n * end of the list with childs for an object or array\n */\n function AppendNode(editor) {\n /** @type {TreeEditor} */\n this.editor = editor;\n this.dom = {};\n }\n\n AppendNode.prototype = new Node();\n /**\n * Return a table row with an append button.\n * @return {Element} dom TR element\n */\n\n AppendNode.prototype.getDom = function () {\n // TODO: implement a new solution for the append node\n var dom = this.dom;\n\n if (dom.tr) {\n return dom.tr;\n }\n\n this._updateEditability(); // a row for the append button\n\n\n var trAppend = document.createElement('tr');\n trAppend.className = 'jsoneditor-append';\n trAppend.node = this;\n dom.tr = trAppend; // TODO: consistent naming\n\n if (this.editor.options.mode === 'tree') {\n // a cell for the dragarea column\n dom.tdDrag = document.createElement('td'); // create context menu\n\n var tdMenu = document.createElement('td');\n dom.tdMenu = tdMenu;\n var menu = document.createElement('button');\n menu.type = 'button';\n menu.className = 'jsoneditor-button jsoneditor-contextmenu-button';\n menu.title = 'Click to open the actions menu (Ctrl+M)';\n dom.menu = menu;\n tdMenu.appendChild(dom.menu);\n } // a cell for the contents (showing text 'empty')\n\n\n var tdAppend = document.createElement('td');\n var domText = document.createElement('div');\n domText.appendChild(document.createTextNode('(' + Object(i18n[\"c\" /* translate */])('empty') + ')'));\n domText.className = 'jsoneditor-readonly';\n tdAppend.appendChild(domText);\n dom.td = tdAppend;\n dom.text = domText;\n this.updateDom();\n return trAppend;\n };\n /**\n * Append node doesn't have a path\n * @returns {null}\n */\n\n\n AppendNode.prototype.getPath = function () {\n return null;\n };\n /**\n * Append node doesn't have an index\n * @returns {null}\n */\n\n\n AppendNode.prototype.getIndex = function () {\n return null;\n };\n /**\n * Update the HTML dom of the Node\n */\n\n\n AppendNode.prototype.updateDom = function (options) {\n var dom = this.dom;\n var tdAppend = dom.td;\n\n if (tdAppend) {\n tdAppend.style.paddingLeft = this.getLevel() * 24 + 26 + 'px'; // TODO: not so nice hard coded offset\n }\n\n var domText = dom.text;\n\n if (domText) {\n domText.firstChild.nodeValue = '(' + Object(i18n[\"c\" /* translate */])('empty') + ' ' + this.parent.type + ')';\n } // attach or detach the contents of the append node:\n // hide when the parent has childs, show when the parent has no childs\n\n\n var trAppend = dom.tr;\n\n if (!this.isVisible()) {\n if (dom.tr.firstChild) {\n if (dom.tdDrag) {\n trAppend.removeChild(dom.tdDrag);\n }\n\n if (dom.tdMenu) {\n trAppend.removeChild(dom.tdMenu);\n }\n\n trAppend.removeChild(tdAppend);\n }\n } else {\n if (!dom.tr.firstChild) {\n if (dom.tdDrag) {\n trAppend.appendChild(dom.tdDrag);\n }\n\n if (dom.tdMenu) {\n trAppend.appendChild(dom.tdMenu);\n }\n\n trAppend.appendChild(tdAppend);\n }\n }\n };\n /**\n * Check whether the AppendNode is currently visible.\n * the AppendNode is visible when its parent has no childs (i.e. is empty).\n * @return {boolean} isVisible\n */\n\n\n AppendNode.prototype.isVisible = function () {\n return this.parent.childs.length === 0;\n };\n /**\n * Show a contextmenu for this node\n * @param {HTMLElement} anchor The element to attach the menu to.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n\n AppendNode.prototype.showContextMenu = function (anchor, onClose) {\n var node = this;\n var appendSubmenu = [{\n text: Object(i18n[\"c\" /* translate */])('auto'),\n className: 'jsoneditor-type-auto',\n title: Object(i18n[\"c\" /* translate */])('autoType'),\n click: function click() {\n node._onAppend('', '', 'auto');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('array'),\n className: 'jsoneditor-type-array',\n title: Object(i18n[\"c\" /* translate */])('arrayType'),\n click: function click() {\n node._onAppend('', []);\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('object'),\n className: 'jsoneditor-type-object',\n title: Object(i18n[\"c\" /* translate */])('objectType'),\n click: function click() {\n node._onAppend('', {});\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('string'),\n className: 'jsoneditor-type-string',\n title: Object(i18n[\"c\" /* translate */])('stringType'),\n click: function click() {\n node._onAppend('', '', 'string');\n }\n }];\n node.addTemplates(appendSubmenu, true);\n var items = [// create append button\n {\n text: Object(i18n[\"c\" /* translate */])('appendText'),\n title: Object(i18n[\"c\" /* translate */])('appendTitleAuto'),\n submenuTitle: Object(i18n[\"c\" /* translate */])('appendSubmenuTitle'),\n className: 'jsoneditor-insert',\n click: function click() {\n node._onAppend('', '', 'auto');\n },\n submenu: appendSubmenu\n }];\n\n if (this.editor.options.onCreateMenu) {\n var path = node.parent.getPath();\n items = this.editor.options.onCreateMenu(items, {\n type: 'append',\n path: path,\n paths: [path]\n });\n }\n\n var menu = new ContextMenu[\"a\" /* ContextMenu */](items, {\n close: onClose\n });\n menu.show(anchor, this.editor.getPopupAnchor());\n };\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n\n AppendNode.prototype.onEvent = function (event) {\n var type = event.type;\n var target = event.target || event.srcElement;\n var dom = this.dom; // highlight the append nodes parent\n\n var menu = dom.menu;\n\n if (target === menu) {\n if (type === 'mouseover') {\n this.editor.highlighter.highlight(this.parent);\n } else if (type === 'mouseout') {\n this.editor.highlighter.unhighlight();\n }\n } // context menu events\n\n\n if (type === 'click' && target === dom.menu) {\n var highlighter = this.editor.highlighter;\n highlighter.highlight(this.parent);\n highlighter.lock();\n Object(util[\"addClassName\"])(dom.menu, 'jsoneditor-selected');\n this.showContextMenu(dom.menu, function () {\n Object(util[\"removeClassName\"])(dom.menu, 'jsoneditor-selected');\n highlighter.unlock();\n highlighter.unhighlight();\n });\n }\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n }\n };\n\n return AppendNode;\n}\n// CONCATENATED MODULE: ./src/js/showMoreNodeFactory.js\n\n\n\n/**\n * A factory function to create an ShowMoreNode, which depends on a Node\n * @param {function} Node\n */\n\nfunction showMoreNodeFactory(Node) {\n /**\n * @constructor ShowMoreNode\n * @extends Node\n * @param {TreeEditor} editor\n * @param {Node} parent\n * Create a new ShowMoreNode. This is a special node which is created\n * for arrays or objects having more than 100 items\n */\n function ShowMoreNode(editor, parent) {\n /** @type {TreeEditor} */\n this.editor = editor;\n this.parent = parent;\n this.dom = {};\n }\n\n ShowMoreNode.prototype = new Node();\n /**\n * Return a table row with an append button.\n * @return {Element} dom TR element\n */\n\n ShowMoreNode.prototype.getDom = function () {\n if (this.dom.tr) {\n return this.dom.tr;\n }\n\n this._updateEditability(); // display \"show more\"\n\n\n if (!this.dom.tr) {\n var me = this;\n var parent = this.parent;\n var showMoreButton = document.createElement('a');\n showMoreButton.appendChild(document.createTextNode(Object(i18n[\"c\" /* translate */])('showMore')));\n showMoreButton.href = '#';\n\n showMoreButton.onclick = function (event) {\n // TODO: use callback instead of accessing a method of the parent\n parent.visibleChilds = Math.floor(parent.visibleChilds / parent.getMaxVisibleChilds() + 1) * parent.getMaxVisibleChilds();\n me.updateDom();\n parent.showChilds();\n event.preventDefault();\n return false;\n };\n\n var showAllButton = document.createElement('a');\n showAllButton.appendChild(document.createTextNode(Object(i18n[\"c\" /* translate */])('showAll')));\n showAllButton.href = '#';\n\n showAllButton.onclick = function (event) {\n // TODO: use callback instead of accessing a method of the parent\n parent.visibleChilds = Infinity;\n me.updateDom();\n parent.showChilds();\n event.preventDefault();\n return false;\n };\n\n var moreContents = document.createElement('div');\n var moreText = document.createTextNode(this._getShowMoreText());\n moreContents.className = 'jsoneditor-show-more';\n moreContents.appendChild(moreText);\n moreContents.appendChild(showMoreButton);\n moreContents.appendChild(document.createTextNode('. '));\n moreContents.appendChild(showAllButton);\n moreContents.appendChild(document.createTextNode('. '));\n var tdContents = document.createElement('td');\n tdContents.appendChild(moreContents);\n var moreTr = document.createElement('tr');\n\n if (this.editor.options.mode === 'tree') {\n moreTr.appendChild(document.createElement('td'));\n moreTr.appendChild(document.createElement('td'));\n }\n\n moreTr.appendChild(tdContents);\n moreTr.className = 'jsoneditor-show-more';\n this.dom.tr = moreTr;\n this.dom.moreContents = moreContents;\n this.dom.moreText = moreText;\n }\n\n this.updateDom();\n return this.dom.tr;\n };\n /**\n * Update the HTML dom of the Node\n */\n\n\n ShowMoreNode.prototype.updateDom = function (options) {\n if (this.isVisible()) {\n // attach to the right child node (the first non-visible child)\n this.dom.tr.node = this.parent.childs[this.parent.visibleChilds];\n\n if (!this.dom.tr.parentNode) {\n var nextTr = this.parent._getNextTr();\n\n if (nextTr) {\n nextTr.parentNode.insertBefore(this.dom.tr, nextTr);\n }\n } // update the counts in the text\n\n\n this.dom.moreText.nodeValue = this._getShowMoreText(); // update left margin\n\n this.dom.moreContents.style.marginLeft = (this.getLevel() + 1) * 24 + 'px';\n } else {\n if (this.dom.tr && this.dom.tr.parentNode) {\n this.dom.tr.parentNode.removeChild(this.dom.tr);\n }\n }\n };\n\n ShowMoreNode.prototype._getShowMoreText = function () {\n return Object(i18n[\"c\" /* translate */])('showMoreStatus', {\n visibleChilds: this.parent.visibleChilds,\n totalChilds: this.parent.childs.length\n }) + ' ';\n };\n /**\n * Check whether the ShowMoreNode is currently visible.\n * the ShowMoreNode is visible when it's parent has more childs than\n * the current visibleChilds\n * @return {boolean} isVisible\n */\n\n\n ShowMoreNode.prototype.isVisible = function () {\n return this.parent.expanded && this.parent.childs.length > this.parent.visibleChilds;\n };\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n\n ShowMoreNode.prototype.onEvent = function (event) {\n var type = event.type;\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n }\n };\n\n return ShowMoreNode;\n}\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar js_showSortModal = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar js_showTransformModal = __webpack_require__(6);\n\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./src/js/Node.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction Node_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Node_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction Node_createClass(Constructor, protoProps, staticProps) { if (protoProps) Node_defineProperties(Constructor.prototype, protoProps); if (staticProps) Node_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @constructor Node\n * Create a new Node\n * @param {./treemode} editor\n * @param {Object} [params] Can contain parameters:\n * {string} field\n * {boolean} fieldEditable\n * {*} value\n * {String} type Can have values 'auto', 'array',\n * 'object', or 'string'.\n */\n\nvar Node_Node = /*#__PURE__*/function () {\n function Node(editor, params) {\n Node_classCallCheck(this, Node);\n\n /** @type {./treemode} */\n this.editor = editor;\n this.dom = {};\n this.expanded = false;\n\n if (params && params instanceof Object) {\n this.setField(params.field, params.fieldEditable);\n\n if ('value' in params) {\n this.setValue(params.value, params.type);\n }\n\n if ('internalValue' in params) {\n this.setInternalValue(params.internalValue);\n }\n } else {\n this.setField('');\n this.setValue(null);\n }\n\n this._debouncedOnChangeValue = Object(util[\"debounce\"])(this._onChangeValue.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\n this._debouncedOnChangeField = Object(util[\"debounce\"])(this._onChangeField.bind(this), Node.prototype.DEBOUNCE_INTERVAL); // starting value for visible children\n\n this.visibleChilds = this.getMaxVisibleChilds();\n }\n\n Node_createClass(Node, [{\n key: \"getMaxVisibleChilds\",\n value: function getMaxVisibleChilds() {\n return this.editor && this.editor.options && this.editor.options.maxVisibleChilds ? this.editor.options.maxVisibleChilds : DEFAULT_MAX_VISIBLE_CHILDS;\n }\n /**\n * Determine whether the field and/or value of this node are editable\n * @private\n */\n\n }, {\n key: \"_updateEditability\",\n value: function _updateEditability() {\n this.editable = {\n field: true,\n value: true\n };\n\n if (this.editor) {\n this.editable.field = this.editor.options.mode === 'tree';\n this.editable.value = this.editor.options.mode !== 'view';\n\n if ((this.editor.options.mode === 'tree' || this.editor.options.mode === 'form') && typeof this.editor.options.onEditable === 'function') {\n var editable = this.editor.options.onEditable({\n field: this.field,\n value: this.value,\n path: this.getPath()\n });\n\n if (typeof editable === 'boolean') {\n this.editable.field = editable;\n this.editable.value = editable;\n } else if (_typeof(editable) === 'object' && editable !== null) {\n if (typeof editable.field === 'boolean') this.editable.field = editable.field;\n if (typeof editable.value === 'boolean') this.editable.value = editable.value;\n } else {\n console.error('Invalid return value for function onEditable.', 'Actual value:', editable, '.', 'Either a boolean or object { field: boolean, value: boolean } expected.');\n this.editable.field = false;\n this.editable.value = false;\n }\n }\n }\n }\n /**\n * Get the path of this node\n * @return {{string|number}[]} Array containing the path to this node.\n * Element is a number if is the index of an array, a string otherwise.\n */\n\n }, {\n key: \"getPath\",\n value: function getPath() {\n var node = this;\n var path = [];\n\n while (node) {\n var field = node.getName();\n\n if (field !== undefined) {\n path.unshift(field);\n }\n\n node = node.parent;\n }\n\n return path;\n }\n /**\n * Get the internal path of this node, a list with the child indexes.\n * @return {String[]} Array containing the internal path to this node\n */\n\n }, {\n key: \"getInternalPath\",\n value: function getInternalPath() {\n var node = this;\n var internalPath = [];\n\n while (node) {\n if (node.parent) {\n internalPath.unshift(node.getIndex());\n }\n\n node = node.parent;\n }\n\n return internalPath;\n }\n /**\n * Get node serializable name\n * @returns {String|Number}\n */\n\n }, {\n key: \"getName\",\n value: function getName() {\n return !this.parent ? undefined // do not add an (optional) field name of the root node\n : this.parent.type !== 'array' ? this.field : this.index;\n }\n /**\n * Find child node by serializable path\n * @param {Array<String>} path\n */\n\n }, {\n key: \"findNodeByPath\",\n value: function findNodeByPath(path) {\n if (!path) {\n return;\n }\n\n if (path.length === 0) {\n return this;\n }\n\n if (path.length && this.childs && this.childs.length) {\n for (var i = 0; i < this.childs.length; ++i) {\n if ('' + path[0] === '' + this.childs[i].getName()) {\n return this.childs[i].findNodeByPath(path.slice(1));\n }\n }\n }\n }\n /**\n * Find child node by an internal path: the indexes of the childs nodes\n * @param {Array<String>} internalPath\n * @return {Node | undefined} Returns the node if the path exists.\n * Returns undefined otherwise.\n */\n\n }, {\n key: \"findNodeByInternalPath\",\n value: function findNodeByInternalPath(internalPath) {\n if (!internalPath) {\n return undefined;\n }\n\n var node = this;\n\n for (var i = 0; i < internalPath.length && node; i++) {\n var childIndex = internalPath[i];\n node = node.childs[childIndex];\n }\n\n return node;\n }\n /**\n * @typedef {{value: String|Object|Number|Boolean, path: Array.<String|Number>}} SerializableNode\n *\n * Returns serializable representation for the node\n * @return {SerializableNode}\n */\n\n }, {\n key: \"serialize\",\n value: function serialize() {\n return {\n value: this.getValue(),\n path: this.getPath()\n };\n }\n /**\n * Find a Node from a JSON path like '.items[3].name'\n * @param {string} jsonPath\n * @return {Node | null} Returns the Node when found, returns null if not found\n */\n\n }, {\n key: \"findNode\",\n value: function findNode(jsonPath) {\n var path = Object(util[\"parsePath\"])(jsonPath);\n var node = this;\n\n var _loop = function _loop() {\n var prop = path.shift();\n\n if (typeof prop === 'number') {\n if (node.type !== 'array') {\n throw new Error('Cannot get child node at index ' + prop + ': node is no array');\n }\n\n node = node.childs[prop];\n } else {\n // string\n if (node.type !== 'object') {\n throw new Error('Cannot get child node ' + prop + ': node is no object');\n }\n\n node = node.childs.filter(function (child) {\n return child.field === prop;\n })[0];\n }\n };\n\n while (node && path.length > 0) {\n _loop();\n }\n\n return node;\n }\n /**\n * Find all parents of this node. The parents are ordered from root node towards\n * the original node.\n * @return {Array.<Node>}\n */\n\n }, {\n key: \"findParents\",\n value: function findParents() {\n var parents = [];\n var parent = this.parent;\n\n while (parent) {\n parents.unshift(parent);\n parent = parent.parent;\n }\n\n return parents;\n }\n /**\n *\n * @param {{dataPath: string, keyword: string, message: string, params: Object, schemaPath: string} | null} error\n * @param {Node} [child] When this is the error of a parent node, pointing\n * to an invalid child node, the child node itself\n * can be provided. If provided, clicking the error\n * icon will set focus to the invalid child node.\n */\n\n }, {\n key: \"setError\",\n value: function setError(error, child) {\n this.error = error;\n this.errorChild = child;\n\n if (this.dom && this.dom.tr) {\n this.updateError();\n }\n }\n /**\n * Render the error\n */\n\n }, {\n key: \"updateError\",\n value: function updateError() {\n var _this = this;\n\n var error = this.fieldError || this.valueError || this.error;\n var tdError = this.dom.tdError;\n\n if (error && this.dom && this.dom.tr) {\n Object(util[\"addClassName\"])(this.dom.tr, 'jsoneditor-validation-error');\n\n if (!tdError) {\n tdError = document.createElement('td');\n this.dom.tdError = tdError;\n this.dom.tdValue.parentNode.appendChild(tdError);\n }\n\n var button = document.createElement('button');\n button.type = 'button';\n button.className = 'jsoneditor-button jsoneditor-schema-error';\n\n var destroy = function destroy() {\n if (_this.dom.popupAnchor) {\n _this.dom.popupAnchor.destroy(); // this will trigger the onDestroy callback\n\n }\n };\n\n var onDestroy = function onDestroy() {\n delete _this.dom.popupAnchor;\n };\n\n var createPopup = function createPopup(destroyOnMouseOut) {\n var frame = _this.editor.frame;\n _this.dom.popupAnchor = Object(createAbsoluteAnchor[\"a\" /* createAbsoluteAnchor */])(button, _this.editor.getPopupAnchor(), onDestroy, destroyOnMouseOut);\n var popupWidth = 200; // must correspond to what's configured in the CSS\n\n var buttonRect = button.getBoundingClientRect();\n var frameRect = frame.getBoundingClientRect();\n var position = frameRect.width - buttonRect.x > popupWidth / 2 + 20 ? 'jsoneditor-above' : 'jsoneditor-left';\n var popover = document.createElement('div');\n popover.className = 'jsoneditor-popover ' + position;\n popover.appendChild(document.createTextNode(error.message));\n\n _this.dom.popupAnchor.appendChild(popover);\n };\n\n button.onmouseover = function () {\n if (!_this.dom.popupAnchor) {\n createPopup(true);\n }\n };\n\n button.onfocus = function () {\n destroy();\n createPopup(false);\n };\n\n button.onblur = function () {\n destroy();\n }; // when clicking the error icon, expand all nodes towards the invalid\n // child node, and set focus to the child node\n\n\n var child = this.errorChild;\n\n if (child) {\n button.onclick = function showInvalidNode() {\n child.findParents().forEach(function (parent) {\n parent.expand(false);\n });\n child.scrollTo(function () {\n child.focus();\n });\n };\n } // apply the error message to the node\n\n\n while (tdError.firstChild) {\n tdError.removeChild(tdError.firstChild);\n }\n\n tdError.appendChild(button);\n } else {\n if (this.dom.tr) {\n Object(util[\"removeClassName\"])(this.dom.tr, 'jsoneditor-validation-error');\n }\n\n if (tdError) {\n this.dom.tdError.parentNode.removeChild(this.dom.tdError);\n delete this.dom.tdError;\n }\n }\n }\n /**\n * Get the index of this node: the index in the list of childs where this\n * node is part of\n * @return {number | null} Returns the index, or null if this is the root node\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex() {\n if (this.parent) {\n var index = this.parent.childs.indexOf(this);\n return index !== -1 ? index : null;\n } else {\n return -1;\n }\n }\n /**\n * Set parent node\n * @param {Node} parent\n */\n\n }, {\n key: \"setParent\",\n value: function setParent(parent) {\n this.parent = parent;\n }\n /**\n * Set field\n * @param {String} field\n * @param {boolean} [fieldEditable]\n */\n\n }, {\n key: \"setField\",\n value: function setField(field, fieldEditable) {\n this.field = field;\n this.previousField = field;\n this.fieldEditable = fieldEditable === true;\n }\n /**\n * Get field\n * @return {String}\n */\n\n }, {\n key: \"getField\",\n value: function getField() {\n if (this.field === undefined) {\n this._getDomField();\n }\n\n return this.field;\n }\n /**\n * Set value. Value is a JSON structure or an element String, Boolean, etc.\n * @param {*} value\n * @param {String} [type] Specify the type of the value. Can be 'auto',\n * 'array', 'object', or 'string'\n */\n\n }, {\n key: \"setValue\",\n value: function setValue(value, type) {\n var childValue, child;\n var i, j;\n var updateDom = false;\n var previousChilds = this.childs;\n this.type = this._getType(value); // check if type corresponds with the provided type\n\n if (type && type !== this.type) {\n if (type === 'string' && this.type === 'auto') {\n this.type = type;\n } else {\n throw new Error('Type mismatch: ' + 'cannot cast value of type \"' + this.type + ' to the specified type \"' + type + '\"');\n }\n }\n\n if (this.type === 'array') {\n // array\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < value.length; i++) {\n childValue = value[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n child.fieldEditable = false;\n child.index = i;\n child.setValue(childValue);\n } else {\n // create a new child\n child = new Node(this.editor, {\n value: childValue\n });\n var visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, updateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= value.length; j--) {\n this.removeChild(this.childs[j], updateDom);\n }\n } else if (this.type === 'object') {\n // object\n if (!this.childs) {\n this.childs = [];\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length - 1; j >= 0; j--) {\n if (!Node_hasOwnProperty(value, this.childs[j].field)) {\n this.removeChild(this.childs[j], updateDom);\n }\n }\n\n i = 0;\n\n for (var childField in value) {\n if (Node_hasOwnProperty(value, childField)) {\n childValue = value[childField];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n var _child = this.findChildByProperty(childField);\n\n if (_child) {\n // reuse existing child, keep its state\n _child.setField(childField, true);\n\n _child.setValue(childValue);\n } else {\n // create a new child, append to the end\n var newChild = new Node(this.editor, {\n field: childField,\n value: childValue\n });\n\n var _visible = i < this.getMaxVisibleChilds();\n\n this.appendChild(newChild, _visible, updateDom);\n }\n }\n\n i++;\n }\n }\n\n this.value = ''; // sort object keys during initialization. Must not trigger an onChange action\n\n if (this.editor.options.sortObjectKeys === true) {\n var triggerAction = false;\n this.sort([], 'asc', triggerAction);\n }\n } else {\n // value\n this.hideChilds();\n delete this.append;\n delete this.showMore;\n delete this.expanded;\n delete this.childs;\n this.value = value;\n } // recreate the DOM if switching from an object/array to auto/string or vice versa\n // needed to recreated the expand button for example\n\n\n if (Array.isArray(previousChilds) !== Array.isArray(this.childs)) {\n this.recreateDom();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n this.previousValue = this.value; // used only to check for changes in DOM vs JS model\n }\n /**\n * Set internal value\n * @param {*} internalValue Internal value structure keeping type,\n * order and duplicates in objects\n */\n\n }, {\n key: \"setInternalValue\",\n value: function setInternalValue(internalValue) {\n var childValue, child, visible;\n var i, j;\n var notUpdateDom = false;\n var previousChilds = this.childs;\n this.type = internalValue.type;\n\n if (internalValue.type === 'array') {\n // array\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < internalValue.childs.length; i++) {\n childValue = internalValue.childs[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n child.fieldEditable = false;\n child.index = i;\n child.setInternalValue(childValue);\n } else {\n // create a new child\n child = new Node(this.editor, {\n internalValue: childValue\n });\n visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, notUpdateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= internalValue.childs.length; j--) {\n this.removeChild(this.childs[j], notUpdateDom);\n }\n } else if (internalValue.type === 'object') {\n // object\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < internalValue.childs.length; i++) {\n childValue = internalValue.childs[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n delete child.index;\n child.setField(childValue.field, true);\n child.setInternalValue(childValue.value);\n } else {\n // create a new child\n child = new Node(this.editor, {\n field: childValue.field,\n internalValue: childValue.value\n });\n visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, notUpdateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= internalValue.childs.length; j--) {\n this.removeChild(this.childs[j], notUpdateDom);\n }\n } else {\n // value\n this.hideChilds();\n delete this.append;\n delete this.showMore;\n delete this.expanded;\n delete this.childs;\n this.value = internalValue.value;\n } // recreate the DOM if switching from an object/array to auto/string or vice versa\n // needed to recreated the expand button for example\n\n\n if (Array.isArray(previousChilds) !== Array.isArray(this.childs)) {\n this.recreateDom();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n this.previousValue = this.value; // used only to check for changes in DOM vs JS model\n }\n /**\n * Remove the DOM of this node and it's childs and recreate it again\n */\n\n }, {\n key: \"recreateDom\",\n value: function recreateDom() {\n if (this.dom && this.dom.tr && this.dom.tr.parentNode) {\n var domAnchor = this._detachFromDom();\n\n this.clearDom();\n\n this._attachToDom(domAnchor);\n } else {\n this.clearDom();\n }\n }\n /**\n * Get value. Value is a JSON structure\n * @return {*} value\n */\n\n }, {\n key: \"getValue\",\n value: function getValue() {\n if (this.type === 'array') {\n var arr = [];\n this.childs.forEach(function (child) {\n arr.push(child.getValue());\n });\n return arr;\n } else if (this.type === 'object') {\n var obj = {};\n this.childs.forEach(function (child) {\n obj[child.getField()] = child.getValue();\n });\n return obj;\n } else {\n if (this.value === undefined) {\n this._getDomValue();\n }\n\n return this.value;\n }\n }\n /**\n * Get internal value, a structure which maintains ordering and duplicates in objects\n * @return {*} value\n */\n\n }, {\n key: \"getInternalValue\",\n value: function getInternalValue() {\n if (this.type === 'array') {\n return {\n type: this.type,\n childs: this.childs.map(function (child) {\n return child.getInternalValue();\n })\n };\n } else if (this.type === 'object') {\n return {\n type: this.type,\n childs: this.childs.map(function (child) {\n return {\n field: child.getField(),\n value: child.getInternalValue()\n };\n })\n };\n } else {\n if (this.value === undefined) {\n this._getDomValue();\n }\n\n return {\n type: this.type,\n value: this.value\n };\n }\n }\n /**\n * Get the nesting level of this node\n * @return {Number} level\n */\n\n }, {\n key: \"getLevel\",\n value: function getLevel() {\n return this.parent ? this.parent.getLevel() + 1 : 0;\n }\n /**\n * Get jsonpath of the current node\n * @return {Node[]} Returns an array with nodes\n */\n\n }, {\n key: \"getNodePath\",\n value: function getNodePath() {\n var path = this.parent ? this.parent.getNodePath() : [];\n path.push(this);\n return path;\n }\n /**\n * Create a clone of a node\n * The complete state of a clone is copied, including whether it is expanded or\n * not. The DOM elements are not cloned.\n * @return {Node} clone\n */\n\n }, {\n key: \"clone\",\n value: function clone() {\n var clone = new Node(this.editor);\n clone.type = this.type;\n clone.field = this.field;\n clone.fieldInnerText = this.fieldInnerText;\n clone.fieldEditable = this.fieldEditable;\n clone.previousField = this.previousField;\n clone.value = this.value;\n clone.valueInnerText = this.valueInnerText;\n clone.previousValue = this.previousValue;\n clone.expanded = this.expanded;\n clone.visibleChilds = this.visibleChilds;\n\n if (this.childs) {\n // an object or array\n var cloneChilds = [];\n this.childs.forEach(function (child) {\n var childClone = child.clone();\n childClone.setParent(clone);\n cloneChilds.push(childClone);\n });\n clone.childs = cloneChilds;\n } else {\n // a value\n clone.childs = undefined;\n }\n\n return clone;\n }\n /**\n * Expand this node and optionally its childs.\n * @param {boolean} [recurse] Optional recursion, true by default. When\n * true, all childs will be expanded recursively\n */\n\n }, {\n key: \"expand\",\n value: function expand(recurse) {\n if (!this.childs) {\n return;\n } // set this node expanded\n\n\n this.expanded = true;\n\n if (this.dom.expand) {\n this.dom.expand.className = 'jsoneditor-button jsoneditor-expanded';\n }\n\n this.showChilds();\n\n if (recurse !== false) {\n this.childs.forEach(function (child) {\n child.expand(recurse);\n });\n } // update the css classes of table row, and fire onClassName etc\n\n\n this.updateDom({\n recurse: false\n });\n }\n /**\n * Collapse this node and optionally its childs.\n * @param {boolean} [recurse] Optional recursion, true by default. When\n * true, all childs will be collapsed recursively\n */\n\n }, {\n key: \"collapse\",\n value: function collapse(recurse) {\n if (!this.childs) {\n return;\n }\n\n this.hideChilds(); // collapse childs in case of recurse\n\n if (recurse !== false) {\n this.childs.forEach(function (child) {\n child.collapse(recurse);\n });\n } // make this node collapsed\n\n\n if (this.dom.expand) {\n this.dom.expand.className = 'jsoneditor-button jsoneditor-collapsed';\n }\n\n this.expanded = false; // update the css classes of table row, and fire onClassName etc\n\n this.updateDom({\n recurse: false\n });\n }\n /**\n * Recursively show all childs when they are expanded\n */\n\n }, {\n key: \"showChilds\",\n value: function showChilds() {\n var childs = this.childs;\n\n if (!childs) {\n return;\n }\n\n if (!this.expanded) {\n return;\n }\n\n var tr = this.dom.tr;\n var nextTr;\n var table = tr ? tr.parentNode : undefined;\n\n if (table) {\n // show row with append button\n var append = this.getAppendDom();\n\n if (!append.parentNode) {\n nextTr = tr.nextSibling;\n\n if (nextTr) {\n table.insertBefore(append, nextTr);\n } else {\n table.appendChild(append);\n }\n } // show childs\n\n\n var iMax = Math.min(this.childs.length, this.visibleChilds);\n nextTr = this._getNextTr();\n\n for (var i = 0; i < iMax; i++) {\n var child = this.childs[i];\n\n if (!child.getDom().parentNode) {\n table.insertBefore(child.getDom(), nextTr);\n }\n\n child.showChilds();\n } // show \"show more childs\" if limited\n\n\n var showMore = this.getShowMoreDom();\n nextTr = this._getNextTr();\n\n if (!showMore.parentNode) {\n table.insertBefore(showMore, nextTr);\n }\n\n this.showMore.updateDom(); // to update the counter\n }\n }\n }, {\n key: \"_getNextTr\",\n value: function _getNextTr() {\n if (this.showMore && this.showMore.getDom().parentNode) {\n return this.showMore.getDom();\n }\n\n if (this.append && this.append.getDom().parentNode) {\n return this.append.getDom();\n }\n }\n /**\n * Hide the node with all its childs\n * @param {{resetVisibleChilds: boolean}} [options]\n */\n\n }, {\n key: \"hide\",\n value: function hide(options) {\n var tr = this.dom.tr;\n var table = tr ? tr.parentNode : undefined;\n\n if (table) {\n table.removeChild(tr);\n }\n\n if (this.dom.popupAnchor) {\n this.dom.popupAnchor.destroy();\n }\n\n this.hideChilds(options);\n }\n /**\n * Recursively hide all childs\n * @param {{resetVisibleChilds: boolean}} [options]\n */\n\n }, {\n key: \"hideChilds\",\n value: function hideChilds(options) {\n var childs = this.childs;\n\n if (!childs) {\n return;\n }\n\n if (!this.expanded) {\n return;\n } // hide append row\n\n\n var append = this.getAppendDom();\n\n if (append.parentNode) {\n append.parentNode.removeChild(append);\n } // hide childs\n\n\n this.childs.forEach(function (child) {\n child.hide();\n }); // hide \"show more\" row\n\n var showMore = this.getShowMoreDom();\n\n if (showMore.parentNode) {\n showMore.parentNode.removeChild(showMore);\n } // reset max visible childs\n\n\n if (!options || options.resetVisibleChilds) {\n this.visibleChilds = this.getMaxVisibleChilds();\n }\n }\n /**\n * set custom css classes on a node\n */\n\n }, {\n key: \"_updateCssClassName\",\n value: function _updateCssClassName() {\n if (this.dom.field && this.editor && this.editor.options && typeof this.editor.options.onClassName === 'function' && this.dom.tree) {\n Object(util[\"removeAllClassNames\"])(this.dom.tree);\n var addClasses = this.editor.options.onClassName({\n path: this.getPath(),\n field: this.field,\n value: this.value\n }) || '';\n Object(util[\"addClassName\"])(this.dom.tree, 'jsoneditor-values ' + addClasses);\n }\n }\n }, {\n key: \"recursivelyUpdateCssClassesOnNodes\",\n value: function recursivelyUpdateCssClassesOnNodes() {\n this._updateCssClassName();\n\n if (Array.isArray(this.childs)) {\n for (var i = 0; i < this.childs.length; i++) {\n this.childs[i].recursivelyUpdateCssClassesOnNodes();\n }\n }\n }\n /**\n * Goes through the path from the node to the root and ensures that it is expanded\n */\n\n }, {\n key: \"expandTo\",\n value: function expandTo() {\n var currentNode = this.parent;\n\n while (currentNode) {\n if (!currentNode.expanded) {\n currentNode.expand();\n }\n\n currentNode = currentNode.parent;\n }\n }\n /**\n * Add a new child to the node.\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {boolean} [visible] If true (default), the child will be rendered\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"appendChild\",\n value: function appendChild(node, visible, updateDom) {\n if (this._hasChilds()) {\n // adjust the link to the parent\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n\n if (this.type === 'array') {\n node.index = this.childs.length;\n }\n\n if (this.type === 'object' && node.field === undefined) {\n // initialize field value if needed\n node.setField('');\n }\n\n this.childs.push(node);\n\n if (this.expanded && visible !== false) {\n // insert into the DOM, before the appendRow\n var newTr = node.getDom();\n\n var nextTr = this._getNextTr();\n\n var table = nextTr ? nextTr.parentNode : undefined;\n\n if (nextTr && table) {\n table.insertBefore(newTr, nextTr);\n }\n\n node.showChilds();\n this.visibleChilds++;\n }\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n node.updateDom({\n recurse: true\n });\n }\n }\n }\n /**\n * Move a node from its current parent to this node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} beforeNode\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"moveBefore\",\n value: function moveBefore(node, beforeNode, updateDom) {\n if (this._hasChilds()) {\n // create a temporary row, to prevent the scroll position from jumping\n // when removing the node\n var tbody = this.dom.tr ? this.dom.tr.parentNode : undefined;\n var trTemp;\n\n if (tbody) {\n trTemp = document.createElement('tr');\n trTemp.style.height = tbody.clientHeight + 'px';\n tbody.appendChild(trTemp);\n }\n\n if (node.parent) {\n node.parent.removeChild(node);\n }\n\n if (beforeNode instanceof Node_AppendNode || !beforeNode) {\n // the this.childs.length + 1 is to reckon with the node that we're about to add\n if (this.childs.length + 1 > this.visibleChilds) {\n var lastVisibleNode = this.childs[this.visibleChilds - 1];\n this.insertBefore(node, lastVisibleNode, updateDom);\n } else {\n var visible = true;\n this.appendChild(node, visible, updateDom);\n }\n } else {\n this.insertBefore(node, beforeNode, updateDom);\n }\n\n if (tbody && trTemp) {\n tbody.removeChild(trTemp);\n }\n }\n }\n /**\n * Insert a new child before a given node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} beforeNode\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"insertBefore\",\n value: function insertBefore(node, beforeNode, updateDom) {\n if (this._hasChilds()) {\n this.visibleChilds++; // initialize field value if needed\n\n if (this.type === 'object' && node.field === undefined) {\n node.setField('');\n }\n\n if (beforeNode === this.append) {\n // append to the child nodes\n // adjust the link to the parent\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n this.childs.push(node);\n } else {\n // insert before a child node\n var index = this.childs.indexOf(beforeNode);\n\n if (index === -1) {\n throw new Error('Node not found');\n } // adjust the link to the parent\n\n\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n this.childs.splice(index, 0, node);\n }\n\n if (this.expanded) {\n // insert into the DOM\n var newTr = node.getDom();\n var nextTr = beforeNode.getDom();\n var table = nextTr ? nextTr.parentNode : undefined;\n\n if (nextTr && table) {\n table.insertBefore(newTr, nextTr);\n }\n\n node.showChilds();\n this.showChilds();\n }\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n node.updateDom({\n recurse: true\n });\n }\n }\n }\n /**\n * Insert a new child before a given node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} afterNode\n */\n\n }, {\n key: \"insertAfter\",\n value: function insertAfter(node, afterNode) {\n if (this._hasChilds()) {\n var index = this.childs.indexOf(afterNode);\n var beforeNode = this.childs[index + 1];\n\n if (beforeNode) {\n this.insertBefore(node, beforeNode);\n } else {\n this.appendChild(node);\n }\n }\n }\n /**\n * Search in this node\n * Searches are case insensitive.\n * @param {String} text\n * @param {Node[]} [results] Array where search results will be added\n * used to count and limit the results whilst iterating\n * @return {Node[]} results Array with nodes containing the search text\n */\n\n }, {\n key: \"search\",\n value: function search(text, results) {\n if (!Array.isArray(results)) {\n results = [];\n }\n\n var index;\n var search = text ? text.toLowerCase() : undefined; // delete old search data\n\n delete this.searchField;\n delete this.searchValue; // search in field\n\n if (this.field !== undefined && results.length <= this.MAX_SEARCH_RESULTS) {\n var field = String(this.field).toLowerCase();\n index = field.indexOf(search);\n\n if (index !== -1) {\n this.searchField = true;\n results.push({\n node: this,\n elem: 'field'\n });\n } // update dom\n\n\n this._updateDomField();\n } // search in value\n\n\n if (this._hasChilds()) {\n // array, object\n // search the nodes childs\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.search(text, results);\n });\n }\n } else {\n // string, auto\n if (this.value !== undefined && results.length <= this.MAX_SEARCH_RESULTS) {\n var value = String(this.value).toLowerCase();\n index = value.indexOf(search);\n\n if (index !== -1) {\n this.searchValue = true;\n results.push({\n node: this,\n elem: 'value'\n });\n } // update dom\n\n\n this._updateDomValue();\n }\n }\n\n return results;\n }\n /**\n * Move the scroll position such that this node is in the visible area.\n * The node will not get the focus\n * @param {function(boolean)} [callback]\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(callback) {\n this.expandPathToNode();\n\n if (this.dom.tr && this.dom.tr.parentNode) {\n this.editor.scrollTo(this.dom.tr.offsetTop, callback);\n }\n }\n /**\n * if the node is not visible, expand its parents\n */\n\n }, {\n key: \"expandPathToNode\",\n value: function expandPathToNode() {\n var node = this;\n var recurse = false;\n\n while (node && node.parent) {\n // expand visible childs of the parent if needed\n var index = node.parent.type === 'array' ? node.index : node.parent.childs.indexOf(node);\n\n while (node.parent.visibleChilds < index + 1) {\n node.parent.visibleChilds += this.getMaxVisibleChilds();\n } // expand the parent itself\n\n\n node.parent.expand(recurse);\n node = node.parent;\n }\n }\n /**\n * Set focus to this node\n * @param {String} [elementName] The field name of the element to get the\n * focus available values: 'drag', 'menu',\n * 'expand', 'field', 'value' (default)\n */\n\n }, {\n key: \"focus\",\n value: function focus(elementName) {\n Node.focusElement = elementName;\n\n if (this.dom.tr && this.dom.tr.parentNode) {\n var dom = this.dom;\n\n switch (elementName) {\n case 'drag':\n if (dom.drag) {\n dom.drag.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'menu':\n dom.menu.focus();\n break;\n\n case 'expand':\n if (this._hasChilds()) {\n dom.expand.focus();\n } else if (dom.field && this.fieldEditable) {\n dom.field.focus();\n Object(util[\"selectContentEditable\"])(dom.field);\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n Object(util[\"selectContentEditable\"])(dom.value);\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'field':\n if (dom.field && this.fieldEditable) {\n dom.field.focus();\n Object(util[\"selectContentEditable\"])(dom.field);\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n Object(util[\"selectContentEditable\"])(dom.value);\n } else if (this._hasChilds()) {\n dom.expand.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'value':\n default:\n if (dom.select) {\n // enum select box\n dom.select.focus();\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n Object(util[\"selectContentEditable\"])(dom.value);\n } else if (dom.field && this.fieldEditable) {\n dom.field.focus();\n Object(util[\"selectContentEditable\"])(dom.field);\n } else if (this._hasChilds()) {\n dom.expand.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n }\n }\n }\n /**\n * Check if given node is a child. The method will check recursively to find\n * this node.\n * @param {Node} node\n * @return {boolean} containsNode\n */\n\n }, {\n key: \"containsNode\",\n value: function containsNode(node) {\n if (this === node) {\n return true;\n }\n\n var childs = this.childs;\n\n if (childs) {\n // TODO: use the js5 Array.some() here?\n for (var i = 0, iMax = childs.length; i < iMax; i++) {\n if (childs[i].containsNode(node)) {\n return true;\n }\n }\n }\n\n return false;\n }\n /**\n * Remove a child from the node.\n * Only applicable when Node value is of type array or object\n * @param {Node} node The child node to be removed;\n * @param {boolean} [updateDom] If true (default), the DOM of the parent\n * node will be updated (like child count)\n * @return {Node | undefined} node The removed node on success,\n * else undefined\n */\n\n }, {\n key: \"removeChild\",\n value: function removeChild(node, updateDom) {\n if (this.childs) {\n var index = this.childs.indexOf(node);\n\n if (index !== -1) {\n if (index < this.visibleChilds && this.expanded) {\n this.visibleChilds--;\n }\n\n node.hide(); // delete old search results\n\n delete node.searchField;\n delete node.searchValue;\n var removedNode = this.childs.splice(index, 1)[0];\n removedNode.parent = null;\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n }\n\n return removedNode;\n }\n }\n\n return undefined;\n }\n /**\n * Remove a child node node from this node\n * This method is equal to Node.removeChild, except that _remove fire an\n * onChange event.\n * @param {Node} node\n * @private\n */\n\n }, {\n key: \"_remove\",\n value: function _remove(node) {\n this.removeChild(node);\n }\n /**\n * Change the type of the value of this Node\n * @param {String} newType\n */\n\n }, {\n key: \"changeType\",\n value: function changeType(newType) {\n var oldType = this.type;\n\n if (oldType === newType) {\n // type is not changed\n return;\n }\n\n if ((newType === 'string' || newType === 'auto') && (oldType === 'string' || oldType === 'auto')) {\n // this is an easy change\n this.type = newType;\n } else {\n // change from array to object, or from string/auto to object/array\n var domAnchor = this._detachFromDom(); // delete the old DOM\n\n\n this.clearDom(); // adjust the field and the value\n\n this.type = newType; // adjust childs\n\n if (newType === 'object') {\n if (!this.childs) {\n this.childs = [];\n }\n\n this.childs.forEach(function (child) {\n child.clearDom();\n delete child.index;\n child.fieldEditable = true;\n\n if (child.field === undefined) {\n child.field = '';\n }\n });\n\n if (oldType === 'string' || oldType === 'auto') {\n this.expanded = true;\n }\n } else if (newType === 'array') {\n if (!this.childs) {\n this.childs = [];\n }\n\n this.childs.forEach(function (child, index) {\n child.clearDom();\n child.fieldEditable = false;\n child.index = index;\n });\n\n if (oldType === 'string' || oldType === 'auto') {\n this.expanded = true;\n }\n } else {\n this.expanded = false;\n }\n\n this._attachToDom(domAnchor);\n }\n\n if (newType === 'auto' || newType === 'string') {\n // cast value to the correct type\n if (newType === 'string') {\n this.value = String(this.value);\n } else {\n this.value = Object(util[\"parseString\"])(String(this.value));\n }\n\n this.focus();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n }\n /**\n * Test whether the JSON contents of this node are deep equal to provided JSON object.\n * @param {*} json\n */\n\n }, {\n key: \"deepEqual\",\n value: function deepEqual(json) {\n var i;\n\n if (this.type === 'array') {\n if (!Array.isArray(json)) {\n return false;\n }\n\n if (this.childs.length !== json.length) {\n return false;\n }\n\n for (i = 0; i < this.childs.length; i++) {\n if (!this.childs[i].deepEqual(json[i])) {\n return false;\n }\n }\n } else if (this.type === 'object') {\n if (_typeof(json) !== 'object' || !json) {\n return false;\n } // we reckon with the order of the properties too.\n\n\n var props = Object.keys(json);\n\n if (this.childs.length !== props.length) {\n return false;\n }\n\n for (i = 0; i < props.length; i++) {\n var child = this.childs[i];\n\n if (child.field !== props[i] || !child.deepEqual(json[child.field])) {\n return false;\n }\n }\n } else {\n if (this.value !== json) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Retrieve value from DOM\n * @private\n */\n\n }, {\n key: \"_getDomValue\",\n value: function _getDomValue() {\n this._clearValueError();\n\n if (this.dom.value && this.type !== 'array' && this.type !== 'object') {\n this.valueInnerText = Object(util[\"getInnerText\"])(this.dom.value);\n\n if (this.valueInnerText === '' && this.dom.value.innerHTML !== '') {\n // When clearing the contents, often a <br/> remains, messing up the\n // styling of the empty text box. Therefore we remove the <br/>\n this.dom.value.textContent = '';\n }\n }\n\n if (this.valueInnerText !== undefined) {\n try {\n // retrieve the value\n var value;\n\n if (this.type === 'string') {\n value = this._unescapeHTML(this.valueInnerText);\n } else {\n var str = this._unescapeHTML(this.valueInnerText);\n\n value = Object(util[\"parseString\"])(str);\n }\n\n if (value !== this.value) {\n this.value = value;\n\n this._debouncedOnChangeValue();\n }\n } catch (err) {\n // keep the previous value\n this._setValueError(Object(i18n[\"c\" /* translate */])('cannotParseValueError'));\n }\n }\n }\n /**\n * Show a local error in case of invalid value\n * @param {string} message\n * @private\n */\n\n }, {\n key: \"_setValueError\",\n value: function _setValueError(message) {\n this.valueError = {\n message: message\n };\n this.updateError();\n }\n }, {\n key: \"_clearValueError\",\n value: function _clearValueError() {\n if (this.valueError) {\n this.valueError = null;\n this.updateError();\n }\n }\n /**\n * Show a local error in case of invalid or duplicate field\n * @param {string} message\n * @private\n */\n\n }, {\n key: \"_setFieldError\",\n value: function _setFieldError(message) {\n this.fieldError = {\n message: message\n };\n this.updateError();\n }\n }, {\n key: \"_clearFieldError\",\n value: function _clearFieldError() {\n if (this.fieldError) {\n this.fieldError = null;\n this.updateError();\n }\n }\n /**\n * Handle a changed value\n * @private\n */\n\n }, {\n key: \"_onChangeValue\",\n value: function _onChangeValue() {\n // get current selection, then override the range such that we can select\n // the added/removed text on undo/redo\n var oldSelection = this.editor.getDomSelection();\n\n if (oldSelection.range) {\n var undoDiff = Object(util[\"textDiff\"])(String(this.value), String(this.previousValue));\n oldSelection.range.startOffset = undoDiff.start;\n oldSelection.range.endOffset = undoDiff.end;\n }\n\n var newSelection = this.editor.getDomSelection();\n\n if (newSelection.range) {\n var redoDiff = Object(util[\"textDiff\"])(String(this.previousValue), String(this.value));\n newSelection.range.startOffset = redoDiff.start;\n newSelection.range.endOffset = redoDiff.end;\n }\n\n this.editor._onAction('editValue', {\n path: this.getInternalPath(),\n oldValue: this.previousValue,\n newValue: this.value,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n\n this.previousValue = this.value;\n }\n /**\n * Handle a changed field\n * @private\n */\n\n }, {\n key: \"_onChangeField\",\n value: function _onChangeField() {\n // get current selection, then override the range such that we can select\n // the added/removed text on undo/redo\n var oldSelection = this.editor.getDomSelection();\n var previous = this.previousField || '';\n\n if (oldSelection.range) {\n var undoDiff = Object(util[\"textDiff\"])(this.field, previous);\n oldSelection.range.startOffset = undoDiff.start;\n oldSelection.range.endOffset = undoDiff.end;\n }\n\n var newSelection = this.editor.getDomSelection();\n\n if (newSelection.range) {\n var redoDiff = Object(util[\"textDiff\"])(previous, this.field);\n newSelection.range.startOffset = redoDiff.start;\n newSelection.range.endOffset = redoDiff.end;\n }\n\n this.editor._onAction('editField', {\n parentPath: this.parent.getInternalPath(),\n index: this.getIndex(),\n oldValue: this.previousField,\n newValue: this.field,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n\n this.previousField = this.field;\n }\n /**\n * Update dom value:\n * - the text color of the value, depending on the type of the value\n * - the height of the field, depending on the width\n * - background color in case it is empty\n * @private\n */\n\n }, {\n key: \"_updateDomValue\",\n value: function _updateDomValue() {\n var domValue = this.dom.value;\n\n if (domValue) {\n var classNames = ['jsoneditor-value']; // set text color depending on value type\n\n var value = this.value;\n var valueType = this.type === 'auto' ? Object(util[\"getType\"])(value) : this.type;\n var valueIsUrl = valueType === 'string' && Object(util[\"isUrl\"])(value);\n classNames.push('jsoneditor-' + valueType);\n\n if (valueIsUrl) {\n classNames.push('jsoneditor-url');\n } // visual styling when empty\n\n\n var isEmpty = String(this.value) === '' && this.type !== 'array' && this.type !== 'object';\n\n if (isEmpty) {\n classNames.push('jsoneditor-empty');\n } // highlight when there is a search result\n\n\n if (this.searchValueActive) {\n classNames.push('jsoneditor-highlight-active');\n }\n\n if (this.searchValue) {\n classNames.push('jsoneditor-highlight');\n }\n\n domValue.className = classNames.join(' '); // update title\n\n if (valueType === 'array' || valueType === 'object') {\n var count = this.childs ? this.childs.length : 0;\n domValue.title = this.type + ' containing ' + count + ' items';\n } else if (valueIsUrl && this.editable.value) {\n domValue.title = Object(i18n[\"c\" /* translate */])('openUrl');\n } else {\n domValue.title = '';\n } // show checkbox when the value is a boolean\n\n\n if (valueType === 'boolean' && this.editable.value) {\n if (!this.dom.checkbox) {\n this.dom.checkbox = document.createElement('input');\n this.dom.checkbox.type = 'checkbox';\n this.dom.tdCheckbox = document.createElement('td');\n this.dom.tdCheckbox.className = 'jsoneditor-tree';\n this.dom.tdCheckbox.appendChild(this.dom.checkbox);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue);\n }\n\n this.dom.checkbox.checked = this.value;\n } else {\n // cleanup checkbox when displayed\n if (this.dom.tdCheckbox) {\n this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox);\n delete this.dom.tdCheckbox;\n delete this.dom.checkbox;\n }\n } // create select box when this node has an enum object\n\n\n if (this[\"enum\"] && this.editable.value) {\n if (!this.dom.select) {\n this.dom.select = document.createElement('select');\n this.id = this.field + '_' + new Date().getUTCMilliseconds();\n this.dom.select.id = this.id;\n this.dom.select.name = this.dom.select.id; // Create the default empty option\n\n var defaultOption = document.createElement('option');\n defaultOption.value = '';\n defaultOption.textContent = '--';\n this.dom.select.appendChild(defaultOption); // Iterate all enum values and add them as options\n\n for (var i = 0; i < this[\"enum\"].length; i++) {\n var option = document.createElement('option');\n option.value = this[\"enum\"][i];\n option.textContent = this[\"enum\"][i];\n this.dom.select.appendChild(option);\n }\n\n this.dom.tdSelect = document.createElement('td');\n this.dom.tdSelect.className = 'jsoneditor-tree';\n this.dom.tdSelect.appendChild(this.dom.select);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue);\n } // Select the matching value\n\n\n this.dom.select.value = this[\"enum\"].indexOf(this.value) !== -1 ? this.value : ''; // default\n // If the enum is inside a composite type display\n // both the simple input and the dropdown field\n\n if (this.schema && !Node_hasOwnProperty(this.schema, 'oneOf') && !Node_hasOwnProperty(this.schema, 'anyOf') && !Node_hasOwnProperty(this.schema, 'allOf')) {\n this.valueFieldHTML = this.dom.tdValue.innerHTML;\n this.dom.tdValue.style.visibility = 'hidden';\n this.dom.tdValue.textContent = '';\n } else {\n delete this.valueFieldHTML;\n }\n } else {\n // cleanup select box when displayed\n if (this.dom.tdSelect) {\n this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect);\n delete this.dom.tdSelect;\n delete this.dom.select;\n this.dom.tdValue.innerHTML = this.valueFieldHTML;\n this.dom.tdValue.style.visibility = '';\n delete this.valueFieldHTML;\n }\n } // show color picker when value is a color\n\n\n if (this.editable.value && this.editor.options.colorPicker && typeof value === 'string' && Object(util[\"isValidColor\"])(value)) {\n if (!this.dom.color) {\n this.dom.color = document.createElement('div');\n this.dom.color.className = 'jsoneditor-color';\n this.dom.tdColor = document.createElement('td');\n this.dom.tdColor.className = 'jsoneditor-tree';\n this.dom.tdColor.appendChild(this.dom.color);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdColor, this.dom.tdValue);\n } // update styling of value and color background\n\n\n Object(util[\"addClassName\"])(this.dom.value, 'jsoneditor-color-value');\n this.dom.color.style.backgroundColor = value;\n } else {\n // cleanup color picker when displayed\n this._deleteDomColor();\n } // show date tag when value is a timestamp in milliseconds\n\n\n if (this._showTimestampTag()) {\n if (!this.dom.date) {\n this.dom.date = document.createElement('div');\n this.dom.date.className = 'jsoneditor-date';\n this.dom.value.parentNode.appendChild(this.dom.date);\n }\n\n var title = null;\n\n if (typeof this.editor.options.timestampFormat === 'function') {\n title = this.editor.options.timestampFormat({\n field: this.field,\n value: this.value,\n path: this.getPath()\n });\n }\n\n if (!title) {\n this.dom.date.textContent = new Date(value).toISOString();\n } else {\n while (this.dom.date.firstChild) {\n this.dom.date.removeChild(this.dom.date.firstChild);\n }\n\n this.dom.date.appendChild(document.createTextNode(title));\n }\n\n this.dom.date.title = new Date(value).toString();\n } else {\n // cleanup date tag\n if (this.dom.date) {\n this.dom.date.parentNode.removeChild(this.dom.date);\n delete this.dom.date;\n }\n } // strip formatting from the contents of the editable div\n\n\n Object(util[\"stripFormatting\"])(domValue);\n\n this._updateDomDefault();\n }\n }\n }, {\n key: \"_deleteDomColor\",\n value: function _deleteDomColor() {\n if (this.dom.color) {\n this.dom.tdColor.parentNode.removeChild(this.dom.tdColor);\n delete this.dom.tdColor;\n delete this.dom.color;\n Object(util[\"removeClassName\"])(this.dom.value, 'jsoneditor-color-value');\n }\n }\n /**\n * Update dom field:\n * - the text color of the field, depending on the text\n * - the height of the field, depending on the width\n * - background color in case it is empty\n * @private\n */\n\n }, {\n key: \"_updateDomField\",\n value: function _updateDomField() {\n var domField = this.dom.field;\n\n if (domField) {\n var tooltip = Object(util[\"makeFieldTooltip\"])(this.schema, this.editor.options.language);\n\n if (tooltip) {\n domField.title = tooltip;\n } // make background color lightgray when empty\n\n\n var isEmpty = String(this.field) === '' && this.parent && this.parent.type !== 'array';\n\n if (isEmpty) {\n Object(util[\"addClassName\"])(domField, 'jsoneditor-empty');\n } else {\n Object(util[\"removeClassName\"])(domField, 'jsoneditor-empty');\n } // highlight when there is a search result\n\n\n if (this.searchFieldActive) {\n Object(util[\"addClassName\"])(domField, 'jsoneditor-highlight-active');\n } else {\n Object(util[\"removeClassName\"])(domField, 'jsoneditor-highlight-active');\n }\n\n if (this.searchField) {\n Object(util[\"addClassName\"])(domField, 'jsoneditor-highlight');\n } else {\n Object(util[\"removeClassName\"])(domField, 'jsoneditor-highlight');\n } // strip formatting from the contents of the editable div\n\n\n Object(util[\"stripFormatting\"])(domField);\n }\n }\n /**\n * Retrieve field from DOM\n * @param {boolean} [forceUnique] If true, the field name will be changed\n * into a unique name in case it is a duplicate.\n * @private\n */\n\n }, {\n key: \"_getDomField\",\n value: function _getDomField(forceUnique) {\n this._clearFieldError();\n\n if (this.dom.field && this.fieldEditable) {\n this.fieldInnerText = Object(util[\"getInnerText\"])(this.dom.field);\n\n if (this.fieldInnerText === '' && this.dom.field.innerHTML !== '') {\n // When clearing the contents, often a <br/> remains, messing up the\n // styling of the empty text box. Therefore we remove the <br/>\n this.dom.field.textContent = '';\n }\n }\n\n if (this.fieldInnerText !== undefined) {\n try {\n var field = this._unescapeHTML(this.fieldInnerText);\n\n var existingFieldNames = this.parent.getFieldNames(this);\n var isDuplicate = existingFieldNames.indexOf(field) !== -1;\n\n if (!isDuplicate) {\n if (field !== this.field) {\n this.field = field;\n\n this._debouncedOnChangeField();\n }\n } else {\n if (forceUnique) {\n // fix duplicate field: change it into a unique name\n field = Object(util[\"findUniqueName\"])(field, existingFieldNames);\n\n if (field !== this.field) {\n this.field = field; // TODO: don't debounce but resolve right away, and cancel current debounce\n\n this._debouncedOnChangeField();\n }\n } else {\n this._setFieldError(Object(i18n[\"c\" /* translate */])('duplicateFieldError'));\n }\n }\n } catch (err) {\n // keep the previous field value\n this._setFieldError(Object(i18n[\"c\" /* translate */])('cannotParseFieldError'));\n }\n }\n }\n /**\n * Update the value of the schema default element in the DOM.\n * @private\n * @returns {undefined}\n */\n\n }, {\n key: \"_updateDomDefault\",\n value: function _updateDomDefault() {\n // Short-circuit if schema is missing, has no default, or if Node has children\n if (!this.schema || this.schema[\"default\"] === undefined || this._hasChilds()) {\n return;\n } // select either enum dropdown (select) or input value\n\n\n var inputElement = this.dom.select ? this.dom.select : this.dom.value;\n\n if (!inputElement) {\n return;\n }\n\n if (this.value === this.schema[\"default\"]) {\n inputElement.title = Object(i18n[\"c\" /* translate */])('default');\n Object(util[\"addClassName\"])(inputElement, 'jsoneditor-is-default');\n Object(util[\"removeClassName\"])(inputElement, 'jsoneditor-is-not-default');\n } else {\n inputElement.removeAttribute('title');\n Object(util[\"removeClassName\"])(inputElement, 'jsoneditor-is-default');\n Object(util[\"addClassName\"])(inputElement, 'jsoneditor-is-not-default');\n }\n }\n /**\n * Test whether to show a timestamp tag or not\n * @return {boolean} Returns true when the value is a timestamp\n */\n\n }, {\n key: \"_showTimestampTag\",\n value: function _showTimestampTag() {\n if (typeof this.value !== 'number') {\n return false;\n }\n\n var timestampTag = this.editor.options.timestampTag;\n\n if (typeof timestampTag === 'function') {\n var result = timestampTag({\n field: this.field,\n value: this.value,\n path: this.getPath()\n });\n\n if (typeof result === 'boolean') {\n return result;\n } else {\n return Object(util[\"isTimestamp\"])(this.field, this.value);\n }\n } else if (timestampTag === true) {\n return Object(util[\"isTimestamp\"])(this.field, this.value);\n } else {\n return false;\n }\n }\n /**\n * Clear the dom of the node\n */\n\n }, {\n key: \"clearDom\",\n value: function clearDom() {\n // TODO: hide the node first?\n // this.hide();\n // TODO: recursively clear dom?\n this.dom = {};\n }\n /**\n * Get the HTML DOM TR element of the node.\n * The dom will be generated when not yet created\n * @return {Element} tr HTML DOM TR Element\n */\n\n }, {\n key: \"getDom\",\n value: function getDom() {\n var dom = this.dom;\n\n if (dom.tr) {\n return dom.tr;\n }\n\n this._updateEditability(); // create row\n\n\n dom.tr = document.createElement('tr');\n dom.tr.node = this;\n\n if (this.editor.options.mode === 'tree') {\n // note: we take here the global setting\n var tdDrag = document.createElement('td');\n\n if (this.editable.field) {\n // create draggable area\n if (this.parent) {\n var domDrag = document.createElement('button');\n domDrag.type = 'button';\n dom.drag = domDrag;\n domDrag.className = 'jsoneditor-button jsoneditor-dragarea';\n domDrag.title = Object(i18n[\"c\" /* translate */])('drag');\n tdDrag.appendChild(domDrag);\n }\n }\n\n dom.tr.appendChild(tdDrag); // create context menu\n\n var tdMenu = document.createElement('td');\n var menu = document.createElement('button');\n menu.type = 'button';\n dom.menu = menu;\n menu.className = 'jsoneditor-button jsoneditor-contextmenu-button';\n menu.title = Object(i18n[\"c\" /* translate */])('actionsMenu');\n tdMenu.appendChild(dom.menu);\n dom.tr.appendChild(tdMenu);\n } // create tree and field\n\n\n var tdField = document.createElement('td');\n dom.tr.appendChild(tdField);\n dom.tree = this._createDomTree();\n tdField.appendChild(dom.tree);\n this.updateDom({\n updateIndexes: true\n });\n return dom.tr;\n }\n /**\n * Test whether a Node is rendered and visible\n * @returns {boolean}\n */\n\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.dom && this.dom.tr && this.dom.tr.parentNode || false;\n }\n /**\n * Test if this node is a sescendant of an other node\n * @param {Node} node\n * @return {boolean} isDescendant\n * @private\n */\n\n }, {\n key: \"isDescendantOf\",\n value: function isDescendantOf(node) {\n var n = this.parent;\n\n while (n) {\n if (n === node) {\n return true;\n }\n\n n = n.parent;\n }\n\n return false;\n }\n /**\n * Create an editable field\n * @return {Element} domField\n * @private\n */\n\n }, {\n key: \"_createDomField\",\n value: function _createDomField() {\n return document.createElement('div');\n }\n /**\n * Set highlighting for this node and all its childs.\n * Only applied to the currently visible (expanded childs)\n * @param {boolean} highlight\n */\n\n }, {\n key: \"setHighlight\",\n value: function setHighlight(highlight) {\n if (this.dom.tr) {\n if (highlight) {\n Object(util[\"addClassName\"])(this.dom.tr, 'jsoneditor-highlight');\n } else {\n Object(util[\"removeClassName\"])(this.dom.tr, 'jsoneditor-highlight');\n }\n\n if (this.append) {\n this.append.setHighlight(highlight);\n }\n\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.setHighlight(highlight);\n });\n }\n }\n }\n /**\n * Select or deselect a node\n * @param {boolean} selected\n * @param {boolean} [isFirst]\n */\n\n }, {\n key: \"setSelected\",\n value: function setSelected(selected, isFirst) {\n this.selected = selected;\n\n if (this.dom.tr) {\n if (selected) {\n Object(util[\"addClassName\"])(this.dom.tr, 'jsoneditor-selected');\n } else {\n Object(util[\"removeClassName\"])(this.dom.tr, 'jsoneditor-selected');\n }\n\n if (isFirst) {\n Object(util[\"addClassName\"])(this.dom.tr, 'jsoneditor-first');\n } else {\n Object(util[\"removeClassName\"])(this.dom.tr, 'jsoneditor-first');\n }\n\n if (this.append) {\n this.append.setSelected(selected);\n }\n\n if (this.showMore) {\n this.showMore.setSelected(selected);\n }\n\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.setSelected(selected);\n });\n }\n }\n }\n /**\n * Update the value of the node. Only primitive types are allowed, no Object\n * or Array is allowed.\n * @param {String | Number | Boolean | null} value\n */\n\n }, {\n key: \"updateValue\",\n value: function updateValue(value) {\n this.value = value;\n this.previousValue = value;\n this.valueError = undefined;\n this.updateDom();\n }\n /**\n * Update the field of the node.\n * @param {String} field\n */\n\n }, {\n key: \"updateField\",\n value: function updateField(field) {\n this.field = field;\n this.previousField = field;\n this.fieldError = undefined;\n this.updateDom();\n }\n /**\n * Update the HTML DOM, optionally recursing through the childs\n * @param {Object} [options] Available parameters:\n * {boolean} [recurse] If true, the\n * DOM of the childs will be updated recursively.\n * False by default.\n * {boolean} [updateIndexes] If true, the childs\n * indexes of the node will be updated too. False by\n * default.\n */\n\n }, {\n key: \"updateDom\",\n value: function updateDom(options) {\n // update level indentation\n var domTree = this.dom.tree;\n\n if (domTree) {\n domTree.style.marginLeft = this.getLevel() * 24 + 'px';\n } // apply field to DOM\n\n\n var domField = this.dom.field;\n\n if (domField) {\n if (this.fieldEditable) {\n // parent is an object\n domField.contentEditable = this.editable.field;\n domField.spellcheck = false;\n domField.className = 'jsoneditor-field';\n } else {\n // parent is an array this is the root node\n domField.contentEditable = false;\n domField.className = 'jsoneditor-readonly';\n }\n\n var fieldText;\n\n if (this.index !== undefined) {\n fieldText = this.index;\n } else if (this.field !== undefined) {\n fieldText = this.field;\n } else {\n var schema = this.editor.options.schema ? Node._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : undefined;\n\n if (schema && schema.title) {\n fieldText = schema.title;\n } else if (this._hasChilds()) {\n fieldText = this.type;\n } else {\n fieldText = '';\n }\n }\n\n var escapedField = this._escapeHTML(fieldText);\n\n if (document.activeElement !== domField || escapedField !== this._unescapeHTML(Object(util[\"getInnerText\"])(domField))) {\n // only update if it not has the focus or when there is an actual change,\n // else you would needlessly loose the caret position when changing tabs\n // or whilst typing\n domField.innerHTML = escapedField;\n }\n\n this._updateSchema();\n } // apply value to DOM\n\n\n var domValue = this.dom.value;\n\n if (domValue) {\n if (this.type === 'array' || this.type === 'object') {\n this.updateNodeName();\n } else {\n var escapedValue = this._escapeHTML(this.value);\n\n if (document.activeElement !== domValue || escapedValue !== this._unescapeHTML(Object(util[\"getInnerText\"])(domValue))) {\n // only update if it not has the focus or when there is an actual change,\n // else you would needlessly loose the caret position when changing tabs\n // or whilst typing\n domValue.innerHTML = escapedValue;\n }\n }\n } // apply styling to the table row\n\n\n var tr = this.dom.tr;\n\n if (tr) {\n if (this.type === 'array' || this.type === 'object') {\n Object(util[\"addClassName\"])(tr, 'jsoneditor-expandable');\n\n if (this.expanded) {\n Object(util[\"addClassName\"])(tr, 'jsoneditor-expanded');\n Object(util[\"removeClassName\"])(tr, 'jsoneditor-collapsed');\n } else {\n Object(util[\"addClassName\"])(tr, 'jsoneditor-collapsed');\n Object(util[\"removeClassName\"])(tr, 'jsoneditor-expanded');\n }\n } else {\n Object(util[\"removeClassName\"])(tr, 'jsoneditor-expandable');\n Object(util[\"removeClassName\"])(tr, 'jsoneditor-expanded');\n Object(util[\"removeClassName\"])(tr, 'jsoneditor-collapsed');\n }\n } // update field and value\n\n\n this._updateDomField();\n\n this._updateDomValue(); // update childs indexes\n\n\n if (options && options.updateIndexes === true) {\n // updateIndexes is true or undefined\n this._updateDomIndexes();\n } // update childs recursively\n\n\n if (options && options.recurse === true) {\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.updateDom(options);\n });\n }\n } // update rendering of error\n\n\n if (this.error) {\n this.updateError();\n } // update row with append button\n\n\n if (this.append) {\n this.append.updateDom();\n } // update \"show more\" text at the bottom of large arrays\n\n\n if (this.showMore) {\n this.showMore.updateDom();\n } // fire onClassName\n\n\n this._updateCssClassName();\n }\n /**\n * Locate the JSON schema of the node and check for any enum type\n * @private\n */\n\n }, {\n key: \"_updateSchema\",\n value: function _updateSchema() {\n // Locating the schema of the node and checking for any enum type\n if (this.editor && this.editor.options) {\n // find the part of the json schema matching this nodes path\n this.schema = this.editor.options.schema // fix childSchema with $ref, and not display the select element on the child schema because of not found enum\n ? Node._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : null;\n\n if (this.schema) {\n this[\"enum\"] = Node._findEnum(this.schema);\n } else {\n delete this[\"enum\"];\n }\n }\n }\n /**\n * Update the DOM of the childs of a node: update indexes and undefined field\n * names.\n * Only applicable when structure is an array or object\n * @private\n */\n\n }, {\n key: \"_updateDomIndexes\",\n value: function _updateDomIndexes() {\n var domValue = this.dom.value;\n var childs = this.childs;\n\n if (domValue && childs) {\n if (this.type === 'array') {\n childs.forEach(function (child, index) {\n child.index = index;\n var childField = child.dom.field;\n\n if (childField) {\n childField.textContent = index;\n }\n });\n } else if (this.type === 'object') {\n childs.forEach(function (child) {\n if (child.index !== undefined) {\n delete child.index;\n\n if (child.field === undefined) {\n child.field = '';\n }\n }\n });\n }\n }\n }\n /**\n * Create an editable value\n * @private\n */\n\n }, {\n key: \"_createDomValue\",\n value: function _createDomValue() {\n var domValue;\n\n if (this.type === 'array') {\n domValue = document.createElement('div');\n domValue.textContent = '[...]';\n } else if (this.type === 'object') {\n domValue = document.createElement('div');\n domValue.textContent = '{...}';\n } else {\n if (!this.editable.value && Object(util[\"isUrl\"])(this.value)) {\n // create a link in case of read-only editor and value containing an url\n domValue = document.createElement('a');\n domValue.href = this.value;\n domValue.innerHTML = this._escapeHTML(this.value);\n } else {\n // create an editable or read-only div\n domValue = document.createElement('div');\n domValue.contentEditable = this.editable.value;\n domValue.spellcheck = false;\n domValue.innerHTML = this._escapeHTML(this.value);\n }\n }\n\n return domValue;\n }\n /**\n * Create an expand/collapse button\n * @return {Element} expand\n * @private\n */\n\n }, {\n key: \"_createDomExpandButton\",\n value: function _createDomExpandButton() {\n // create expand button\n var expand = document.createElement('button');\n expand.type = 'button';\n\n if (this._hasChilds()) {\n expand.className = this.expanded ? 'jsoneditor-button jsoneditor-expanded' : 'jsoneditor-button jsoneditor-collapsed';\n expand.title = Object(i18n[\"c\" /* translate */])('expandTitle');\n } else {\n expand.className = 'jsoneditor-button jsoneditor-invisible';\n expand.title = '';\n }\n\n return expand;\n }\n /**\n * Create a DOM tree element, containing the expand/collapse button\n * @return {Element} domTree\n * @private\n */\n\n }, {\n key: \"_createDomTree\",\n value: function _createDomTree() {\n var dom = this.dom;\n var domTree = document.createElement('table');\n var tbody = document.createElement('tbody');\n domTree.style.borderCollapse = 'collapse'; // TODO: put in css\n\n domTree.className = 'jsoneditor-values';\n domTree.appendChild(tbody);\n var tr = document.createElement('tr');\n tbody.appendChild(tr); // create expand button\n\n var tdExpand = document.createElement('td');\n tdExpand.className = 'jsoneditor-tree';\n tr.appendChild(tdExpand);\n dom.expand = this._createDomExpandButton();\n tdExpand.appendChild(dom.expand);\n dom.tdExpand = tdExpand; // create the field\n\n var tdField = document.createElement('td');\n tdField.className = 'jsoneditor-tree';\n tr.appendChild(tdField);\n dom.field = this._createDomField();\n tdField.appendChild(dom.field);\n dom.tdField = tdField; // create a separator\n\n var tdSeparator = document.createElement('td');\n tdSeparator.className = 'jsoneditor-tree';\n tr.appendChild(tdSeparator);\n\n if (this.type !== 'object' && this.type !== 'array') {\n tdSeparator.appendChild(document.createTextNode(':'));\n tdSeparator.className = 'jsoneditor-separator';\n }\n\n dom.tdSeparator = tdSeparator; // create the value\n\n var tdValue = document.createElement('td');\n tdValue.className = 'jsoneditor-tree';\n tr.appendChild(tdValue);\n dom.value = this._createDomValue();\n tdValue.appendChild(dom.value);\n dom.tdValue = tdValue;\n return domTree;\n }\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n }, {\n key: \"onEvent\",\n value: function onEvent(event) {\n var type = event.type;\n var target = event.target || event.srcElement;\n var dom = this.dom;\n var node = this;\n\n var expandable = this._hasChilds(); // check if mouse is on menu or on dragarea.\n // If so, highlight current row and its childs\n\n\n if (target === dom.drag || target === dom.menu) {\n if (type === 'mouseover') {\n this.editor.highlighter.highlight(this);\n } else if (type === 'mouseout') {\n this.editor.highlighter.unhighlight();\n }\n } // context menu events\n\n\n if (type === 'click' && target === dom.menu) {\n var highlighter = node.editor.highlighter;\n highlighter.highlight(node);\n highlighter.lock();\n Object(util[\"addClassName\"])(dom.menu, 'jsoneditor-selected');\n this.showContextMenu(dom.menu, function () {\n Object(util[\"removeClassName\"])(dom.menu, 'jsoneditor-selected');\n highlighter.unlock();\n highlighter.unhighlight();\n });\n } // expand events\n\n\n if (type === 'click') {\n if (target === dom.expand) {\n if (expandable) {\n var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\n\n this._onExpand(recurse);\n }\n }\n }\n\n if (type === 'click' && (event.target === node.dom.tdColor || event.target === node.dom.color)) {\n this._showColorPicker();\n } // swap the value of a boolean when the checkbox displayed left is clicked\n\n\n if (type === 'change' && target === dom.checkbox) {\n this.dom.value.textContent = String(!this.value);\n\n this._getDomValue();\n\n this._updateDomDefault();\n } // update the value of the node based on the selected option\n\n\n if (type === 'change' && target === dom.select) {\n this.dom.value.innerHTML = this._escapeHTML(dom.select.value);\n\n this._getDomValue();\n\n this._updateDomValue();\n } // value events\n\n\n var domValue = dom.value;\n\n if (target === domValue) {\n // noinspection FallthroughInSwitchStatementJS\n switch (type) {\n case 'blur':\n case 'change':\n {\n this._getDomValue();\n\n this._clearValueError();\n\n this._updateDomValue();\n\n var escapedValue = this._escapeHTML(this.value);\n\n if (escapedValue !== this._unescapeHTML(Object(util[\"getInnerText\"])(domValue))) {\n // only update when there is an actual change, else you loose the\n // caret position when changing tabs or whilst typing\n domValue.innerHTML = escapedValue;\n }\n\n break;\n }\n\n case 'input':\n // this._debouncedGetDomValue(true); // TODO\n this._getDomValue();\n\n this._updateDomValue();\n\n break;\n\n case 'keydown':\n case 'mousedown':\n // TODO: cleanup\n this.editor.selection = this.editor.getDomSelection();\n break;\n\n case 'click':\n if (event.ctrlKey && this.editable.value) {\n // if read-only, we use the regular click behavior of an anchor\n if (Object(util[\"isUrl\"])(this.value)) {\n event.preventDefault();\n window.open(this.value, '_blank', 'noopener');\n }\n }\n\n break;\n\n case 'keyup':\n // this._debouncedGetDomValue(true); // TODO\n this._getDomValue();\n\n this._updateDomValue();\n\n break;\n\n case 'cut':\n case 'paste':\n setTimeout(function () {\n node._getDomValue();\n\n node._updateDomValue();\n }, 1);\n break;\n }\n } // field events\n\n\n var domField = dom.field;\n\n if (target === domField) {\n switch (type) {\n case 'blur':\n {\n this._getDomField(true);\n\n this._updateDomField();\n\n var escapedField = this._escapeHTML(this.field);\n\n if (escapedField !== this._unescapeHTML(Object(util[\"getInnerText\"])(domField))) {\n // only update when there is an actual change, else you loose the\n // caret position when changing tabs or whilst typing\n domField.innerHTML = escapedField;\n }\n\n break;\n }\n\n case 'input':\n this._getDomField();\n\n this._updateSchema();\n\n this._updateDomField();\n\n this._updateDomValue();\n\n break;\n\n case 'keydown':\n case 'mousedown':\n this.editor.selection = this.editor.getDomSelection();\n break;\n\n case 'keyup':\n this._getDomField();\n\n this._updateDomField();\n\n break;\n\n case 'cut':\n case 'paste':\n setTimeout(function () {\n node._getDomField();\n\n node._updateDomField();\n }, 1);\n break;\n }\n } // focus\n // when clicked in whitespace left or right from the field or value, set focus\n\n\n var domTree = dom.tree;\n\n if (domTree && target === domTree.parentNode && type === 'click' && !event.hasMoved) {\n var left = event.offsetX !== undefined ? event.offsetX < (this.getLevel() + 1) * 24 : event.pageX < Object(util[\"getAbsoluteLeft\"])(dom.tdSeparator); // for FF\n\n if (left || expandable) {\n // node is expandable when it is an object or array\n if (domField) {\n Object(util[\"setEndOfContentEditable\"])(domField);\n domField.focus();\n }\n } else {\n if (domValue && !this[\"enum\"]) {\n Object(util[\"setEndOfContentEditable\"])(domValue);\n domValue.focus();\n }\n }\n }\n\n if ((target === dom.tdExpand && !expandable || target === dom.tdField || target === dom.tdSeparator) && type === 'click' && !event.hasMoved) {\n if (domField) {\n Object(util[\"setEndOfContentEditable\"])(domField);\n domField.focus();\n }\n }\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n } // fire after applying for example a change by clicking a checkbox\n\n\n if (typeof this.editor.options.onEvent === 'function') {\n this._onEvent(event);\n }\n }\n /**\n * Trigger external onEvent provided in options if node is a JSON field or\n * value.\n * Information provided depends on the element, value is only included if\n * event occurs in a JSON value:\n * {field: string, path: {string|number}[] [, value: string]}\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event) {\n var element = event.target;\n var isField = element === this.dom.field;\n var isValue = element === this.dom.value || element === this.dom.checkbox || element === this.dom.select;\n\n if (isField || isValue) {\n var info = {\n field: this.getField(),\n path: this.getPath()\n }; // For leaf values, include value\n\n if (isValue && !this._hasChilds()) {\n info.value = this.getValue();\n }\n\n this.editor.options.onEvent(info, event);\n }\n }\n /**\n * Key down event handler\n * @param {Event} event\n */\n\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n var keynum = event.which || event.keyCode;\n var target = event.target || event.srcElement;\n var ctrlKey = event.ctrlKey;\n var shiftKey = event.shiftKey;\n var altKey = event.altKey;\n var handled = false;\n var prevNode, nextNode, nextDom, nextDom2;\n var editable = this.editor.options.mode === 'tree';\n var oldSelection;\n var oldNextNode;\n var oldParent;\n var oldIndexRedo;\n var newIndexRedo;\n var oldParentPathRedo;\n var newParentPathRedo;\n var nodes;\n var multiselection;\n var selectedNodes = this.editor.multiselection.nodes.length > 0 ? this.editor.multiselection.nodes : [this];\n var firstNode = selectedNodes[0];\n var lastNode = selectedNodes[selectedNodes.length - 1]; // console.log(ctrlKey, keynum, event.charCode); // TODO: cleanup\n\n if (keynum === 13) {\n // Enter\n if (target === this.dom.value) {\n if (!this.editable.value || event.ctrlKey) {\n if (Object(util[\"isUrl\"])(this.value)) {\n window.open(this.value, '_blank', 'noopener');\n handled = true;\n }\n }\n } else if (target === this.dom.expand) {\n var expandable = this._hasChilds();\n\n if (expandable) {\n var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\n\n this._onExpand(recurse);\n\n target.focus();\n handled = true;\n }\n }\n } else if (keynum === 68) {\n // D\n if (ctrlKey && editable) {\n // Ctrl+D\n Node.onDuplicate(selectedNodes);\n handled = true;\n }\n } else if (keynum === 69) {\n // E\n if (ctrlKey) {\n // Ctrl+E and Ctrl+Shift+E\n this._onExpand(shiftKey); // recurse = shiftKey\n\n\n target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline)\n\n handled = true;\n }\n } else if (keynum === 77 && editable) {\n // M\n if (ctrlKey) {\n // Ctrl+M\n this.showContextMenu(target);\n handled = true;\n }\n } else if (keynum === 46 && editable) {\n // Del\n if (ctrlKey) {\n // Ctrl+Del\n Node.onRemove(selectedNodes);\n handled = true;\n }\n } else if (keynum === 45 && editable) {\n // Ins\n if (ctrlKey && !shiftKey) {\n // Ctrl+Ins\n this._onInsertBefore();\n\n handled = true;\n } else if (ctrlKey && shiftKey) {\n // Ctrl+Shift+Ins\n this._onInsertAfter();\n\n handled = true;\n }\n } else if (keynum === 35) {\n // End\n if (altKey) {\n // Alt+End\n // find the last node\n var endNode = this._lastNode();\n\n if (endNode) {\n endNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n }\n } else if (keynum === 36) {\n // Home\n if (altKey) {\n // Alt+Home\n // find the first node\n var homeNode = this._firstNode();\n\n if (homeNode) {\n homeNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n }\n } else if (keynum === 37) {\n // Arrow Left\n if (altKey && !shiftKey) {\n // Alt + Arrow Left\n // move to left element\n var prevElement = this._previousElement(target);\n\n if (prevElement) {\n this.focus(this._getElementName(prevElement));\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow left\n if (lastNode.expanded) {\n var appendDom = lastNode.getAppendDom();\n nextDom = appendDom ? appendDom.nextSibling : undefined;\n } else {\n var dom = lastNode.getDom();\n nextDom = dom.nextSibling;\n }\n\n if (nextDom) {\n nextNode = Node.getNodeFromTarget(nextDom);\n nextDom2 = nextDom.nextSibling;\n var nextNode2 = Node.getNodeFromTarget(nextDom2);\n\n if (nextNode && nextNode instanceof Node_AppendNode && !(lastNode.parent.childs.length === 1) && nextNode2 && nextNode2.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = nextNode2.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = nextNode2.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n nextNode2.parent.moveBefore(node, nextNode2);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n }\n }\n } else if (keynum === 38) {\n // Arrow Up\n if (altKey && !shiftKey) {\n // Alt + Arrow Up\n // find the previous node\n prevNode = this._previousNode();\n\n if (prevNode) {\n this.editor.deselect(true);\n prevNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n } else if (!altKey && ctrlKey && shiftKey && editable) {\n // Ctrl + Shift + Arrow Up\n // select multiple nodes\n prevNode = this._previousNode();\n\n if (prevNode) {\n multiselection = this.editor.multiselection;\n multiselection.start = multiselection.start || this;\n multiselection.end = prevNode;\n nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\n this.editor.select(nodes);\n prevNode.focus('field'); // select field as we know this always exists\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Up\n // find the previous node\n prevNode = firstNode._previousNode();\n\n if (prevNode && prevNode.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = prevNode.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = prevNode.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n prevNode.parent.moveBefore(node, prevNode);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n\n handled = true;\n }\n } else if (keynum === 39) {\n // Arrow Right\n if (altKey && !shiftKey) {\n // Alt + Arrow Right\n // move to right element\n var nextElement = this._nextElement(target);\n\n if (nextElement) {\n this.focus(this._getElementName(nextElement));\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Right\n var _dom = firstNode.getDom();\n\n var prevDom = _dom.previousSibling;\n\n if (prevDom) {\n prevNode = Node.getNodeFromTarget(prevDom);\n\n if (prevNode && prevNode.parent && !prevNode.isVisible()) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = prevNode.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = prevNode.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n prevNode.parent.moveBefore(node, prevNode);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n }\n }\n } else if (keynum === 40) {\n // Arrow Down\n if (altKey && !shiftKey) {\n // Alt + Arrow Down\n // find the next node\n nextNode = this._nextNode();\n\n if (nextNode) {\n this.editor.deselect(true);\n nextNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n } else if (!altKey && ctrlKey && shiftKey && editable) {\n // Ctrl + Shift + Arrow Down\n // select multiple nodes\n nextNode = this._nextNode();\n\n if (nextNode) {\n multiselection = this.editor.multiselection;\n multiselection.start = multiselection.start || this;\n multiselection.end = nextNode;\n nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\n this.editor.select(nodes);\n nextNode.focus('field'); // select field as we know this always exists\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Down\n // find the 2nd next node and move before that one\n if (lastNode.expanded) {\n nextNode = lastNode.append ? lastNode.append._nextNode() : undefined;\n } else {\n nextNode = lastNode._nextNode();\n } // when the next node is not visible, we've reached the \"showMore\" buttons\n\n\n if (nextNode && !nextNode.isVisible()) {\n nextNode = nextNode.parent.showMore;\n }\n\n if (nextNode && nextNode instanceof Node_AppendNode) {\n nextNode = lastNode;\n }\n\n var _nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append);\n\n if (_nextNode2 && _nextNode2.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = _nextNode2.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = _nextNode2.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n _nextNode2.parent.moveBefore(node, _nextNode2);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n\n handled = true;\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /**\n * Handle the expand event, when clicked on the expand button\n * @param {boolean} recurse If true, child nodes will be expanded too\n * @private\n */\n\n }, {\n key: \"_onExpand\",\n value: function _onExpand(recurse) {\n var table;\n var frame;\n var scrollTop;\n\n if (recurse) {\n // Take the table offline\n table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this\n\n frame = table.parentNode;\n scrollTop = frame.scrollTop;\n frame.removeChild(table);\n }\n\n if (this.expanded) {\n this.collapse(recurse);\n } else {\n this.expand(recurse);\n }\n\n if (recurse) {\n // Put the table online again\n frame.appendChild(table);\n frame.scrollTop = scrollTop;\n }\n }\n /**\n * Open a color picker to select a new color\n * @private\n */\n\n }, {\n key: \"_showColorPicker\",\n value: function _showColorPicker() {\n if (typeof this.editor.options.onColorPicker === 'function' && this.dom.color) {\n var node = this; // force deleting current color picker (if any)\n\n node._deleteDomColor();\n\n node.updateDom();\n var colorAnchor = Object(createAbsoluteAnchor[\"a\" /* createAbsoluteAnchor */])(this.dom.color, this.editor.getPopupAnchor());\n this.editor.options.onColorPicker(colorAnchor, this.value, function onChange(value) {\n if (typeof value === 'string' && value !== node.value) {\n // force recreating the color block, to cleanup any attached color picker\n node._deleteDomColor();\n\n node.value = value;\n node.updateDom();\n\n node._debouncedOnChangeValue();\n }\n });\n }\n }\n /**\n * Get all field names of an object\n * @param {Node} [excludeNode] Optional node to be excluded from the returned field names\n * @return {string[]}\n */\n\n }, {\n key: \"getFieldNames\",\n value: function getFieldNames(excludeNode) {\n if (this.type === 'object') {\n return this.childs.filter(function (child) {\n return child !== excludeNode;\n }).map(function (child) {\n return child.field;\n });\n }\n\n return [];\n }\n /**\n * Handle insert before event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onInsertBefore\",\n value: function _onInsertBefore(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n var beforePath = this.getInternalPath();\n this.parent.insertBefore(newNode, this);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('insertBeforeNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n beforePath: beforePath,\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Handle insert after event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onInsertAfter\",\n value: function _onInsertAfter(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n this.parent.insertAfter(newNode, this);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('insertAfterNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n afterPath: this.getInternalPath(),\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Handle append event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onAppend\",\n value: function _onAppend(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n this.parent.appendChild(newNode);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('appendNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Change the type of the node's value\n * @param {String} newType\n * @private\n */\n\n }, {\n key: \"_onChangeType\",\n value: function _onChangeType(newType) {\n var oldType = this.type;\n\n if (newType !== oldType) {\n var oldSelection = this.editor.getDomSelection();\n this.changeType(newType);\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('changeType', {\n path: this.getInternalPath(),\n oldType: oldType,\n newType: newType,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n }\n /**\n * Sort the child's of the node. Only applicable when the node has type 'object'\n * or 'array'.\n * @param {String[] | string} path Path of the child value to be compared\n * @param {String} direction Sorting direction. Available values: \"asc\", \"desc\"\n * @param {boolean} [triggerAction=true] If true (default), a user action will be\n * triggered, creating an entry in history\n * and invoking onChange.\n * @private\n */\n\n }, {\n key: \"sort\",\n value: function sort(path, direction) {\n var triggerAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (typeof path === 'string') {\n path = Object(util[\"parsePath\"])(path);\n }\n\n if (!this._hasChilds()) {\n return;\n }\n\n this.hideChilds(); // sorting is faster when the childs are not attached to the dom\n // copy the childs array (the old one will be kept for an undo action\n\n var oldChilds = this.childs;\n this.childs = this.childs.concat(); // sort the childs array\n\n var order = direction === 'desc' ? -1 : 1;\n\n if (this.type === 'object') {\n this.childs.sort(function (a, b) {\n return order * naturalSort_default()(a.field, b.field);\n });\n } else {\n // this.type === 'array'\n this.childs.sort(function (a, b) {\n var nodeA = a.getNestedChild(path);\n var nodeB = b.getNestedChild(path);\n\n if (!nodeA) {\n return order;\n }\n\n if (!nodeB) {\n return -order;\n }\n\n var valueA = nodeA.value;\n var valueB = nodeB.value;\n\n if (typeof valueA !== 'string' && typeof valueB !== 'string') {\n // both values are a number, boolean, or null -> use simple, fast sorting\n return valueA > valueB ? order : valueA < valueB ? -order : 0;\n }\n\n return order * naturalSort_default()(valueA, valueB);\n });\n } // update the index numbering\n\n\n this._updateDomIndexes();\n\n this.showChilds();\n\n if (triggerAction === true) {\n this.editor._onAction('sort', {\n path: this.getInternalPath(),\n oldChilds: oldChilds,\n newChilds: this.childs\n });\n }\n }\n /**\n * Replace the value of the node, keep it's state\n * @param {*} newValue\n */\n\n }, {\n key: \"update\",\n value: function update(newValue) {\n var oldValue = this.getInternalValue();\n this.setValue(newValue);\n\n this.editor._onAction('transform', {\n path: this.getInternalPath(),\n oldValue: oldValue,\n newValue: this.getInternalValue()\n });\n }\n /**\n * Remove this node from the DOM\n * @returns {{table: Element, nextTr?: Element}}\n * Returns the DOM elements that which be used to attach the node\n * to the DOM again, see _attachToDom.\n * @private\n */\n\n }, {\n key: \"_detachFromDom\",\n value: function _detachFromDom() {\n var table = this.dom.tr ? this.dom.tr.parentNode : undefined;\n var lastTr;\n\n if (this.expanded) {\n lastTr = this.getAppendDom();\n } else {\n lastTr = this.getDom();\n }\n\n var nextTr = lastTr && lastTr.parentNode ? lastTr.nextSibling : undefined;\n this.hide({\n resetVisibleChilds: false\n });\n return {\n table: table,\n nextTr: nextTr\n };\n }\n /**\n * Attach this node to the DOM again\n * @param {{table: Element, nextTr?: Element}} domAnchor\n * The DOM elements returned by _detachFromDom.\n * @private\n */\n\n }, {\n key: \"_attachToDom\",\n value: function _attachToDom(domAnchor) {\n if (domAnchor.table) {\n if (domAnchor.nextTr) {\n domAnchor.table.insertBefore(this.getDom(), domAnchor.nextTr);\n } else {\n domAnchor.table.appendChild(this.getDom());\n }\n }\n\n if (this.expanded) {\n this.showChilds();\n }\n }\n /**\n * Transform the node given a JMESPath query.\n * @param {String} query JMESPath query to apply\n * @private\n */\n\n }, {\n key: \"transform\",\n value: function transform(query) {\n if (!this._hasChilds()) {\n return;\n }\n\n this.hideChilds(); // sorting is faster when the childs are not attached to the dom\n\n try {\n var oldInternalValue = this.getInternalValue(); // apply the JMESPath query\n\n var oldValue = this.getValue();\n var newValue = this.editor.options.executeQuery(oldValue, query);\n this.setValue(newValue);\n var newInternalValue = this.getInternalValue();\n\n this.editor._onAction('transform', {\n path: this.getInternalPath(),\n oldValue: oldInternalValue,\n newValue: newInternalValue\n });\n\n this.showChilds();\n } catch (err) {\n this.showChilds();\n\n this.editor._onError(err);\n }\n }\n /**\n * Make this object the root object of the ditor\n */\n\n }, {\n key: \"extract\",\n value: function extract() {\n this.editor.node.hideChilds();\n this.hideChilds();\n\n try {\n var oldInternalValue = this.editor.node.getInternalValue();\n\n this.editor._setRoot(this);\n\n var newInternalValue = this.editor.node.getInternalValue();\n\n this.editor._onAction('transform', {\n path: this.editor.node.getInternalPath(),\n oldValue: oldInternalValue,\n newValue: newInternalValue\n });\n } catch (err) {\n this.editor._onError(err);\n } finally {\n this.updateDom({\n recurse: true\n });\n this.showChilds();\n }\n }\n /**\n * Get a nested child given a path with properties\n * @param {String[]} path\n * @returns {Node}\n */\n\n }, {\n key: \"getNestedChild\",\n value: function getNestedChild(path) {\n var i = 0;\n var child = this;\n\n while (child && i < path.length) {\n child = child.findChildByProperty(path[i]);\n i++;\n }\n\n return child;\n }\n /**\n * Find a child by property name\n * @param {string} prop\n * @return {Node | undefined} Returns the child node when found, or undefined otherwise\n */\n\n }, {\n key: \"findChildByProperty\",\n value: function findChildByProperty(prop) {\n if (this.type !== 'object') {\n return undefined;\n }\n\n return this.childs.find(function (child) {\n return child.field === prop;\n });\n }\n /**\n * Create a table row with an append button.\n * @return {HTMLElement | undefined} tr with the AppendNode contents\n */\n\n }, {\n key: \"getAppendDom\",\n value: function getAppendDom() {\n if (!this.append) {\n this.append = new Node_AppendNode(this.editor);\n this.append.setParent(this);\n }\n\n return this.append.getDom();\n }\n /**\n * Create a table row with an showMore button and text\n * @return {HTMLElement | undefined} tr with the AppendNode contents\n */\n\n }, {\n key: \"getShowMoreDom\",\n value: function getShowMoreDom() {\n if (!this.showMore) {\n this.showMore = new Node_ShowMoreNode(this.editor, this);\n }\n\n return this.showMore.getDom();\n }\n /**\n * Get the next sibling of current node\n * @return {Node} nextSibling\n */\n\n }, {\n key: \"nextSibling\",\n value: function nextSibling() {\n var index = this.parent.childs.indexOf(this);\n return this.parent.childs[index + 1] || this.parent.append;\n }\n /**\n * Get the previously rendered node\n * @return {Node | null} previousNode\n */\n\n }, {\n key: \"_previousNode\",\n value: function _previousNode() {\n var prevNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n // find the previous field\n var prevDom = dom;\n\n do {\n prevDom = prevDom.previousSibling;\n prevNode = Node.getNodeFromTarget(prevDom);\n } while (prevDom && prevNode && prevNode instanceof Node_AppendNode && !prevNode.isVisible());\n }\n\n return prevNode;\n }\n /**\n * Get the next rendered node\n * @return {Node | null} nextNode\n * @private\n */\n\n }, {\n key: \"_nextNode\",\n value: function _nextNode() {\n var nextNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n // find the previous field\n var nextDom = dom;\n\n do {\n nextDom = nextDom.nextSibling;\n nextNode = Node.getNodeFromTarget(nextDom);\n } while (nextDom && nextNode && nextNode instanceof Node_AppendNode && !nextNode.isVisible());\n }\n\n return nextNode;\n }\n /**\n * Get the first rendered node\n * @return {Node | null} firstNode\n * @private\n */\n\n }, {\n key: \"_firstNode\",\n value: function _firstNode() {\n var firstNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n var firstDom = dom.parentNode.firstChild;\n firstNode = Node.getNodeFromTarget(firstDom);\n }\n\n return firstNode;\n }\n /**\n * Get the last rendered node\n * @return {Node | null} lastNode\n * @private\n */\n\n }, {\n key: \"_lastNode\",\n value: function _lastNode() {\n var lastNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n var lastDom = dom.parentNode.lastChild;\n lastNode = Node.getNodeFromTarget(lastDom);\n\n while (lastDom && lastNode && !lastNode.isVisible()) {\n lastDom = lastDom.previousSibling;\n lastNode = Node.getNodeFromTarget(lastDom);\n }\n }\n\n return lastNode;\n }\n /**\n * Get the next element which can have focus.\n * @param {Element} elem\n * @return {Element | null} nextElem\n * @private\n */\n\n }, {\n key: \"_previousElement\",\n value: function _previousElement(elem) {\n var dom = this.dom; // noinspection FallthroughInSwitchStatementJS\n\n switch (elem) {\n case dom.value:\n if (this.fieldEditable) {\n return dom.field;\n }\n\n // intentional fall through\n\n case dom.field:\n if (this._hasChilds()) {\n return dom.expand;\n }\n\n // intentional fall through\n\n case dom.expand:\n return dom.menu;\n\n case dom.menu:\n if (dom.drag) {\n return dom.drag;\n }\n\n // intentional fall through\n\n default:\n return null;\n }\n }\n /**\n * Get the next element which can have focus.\n * @param {Element} elem\n * @return {Element | null} nextElem\n * @private\n */\n\n }, {\n key: \"_nextElement\",\n value: function _nextElement(elem) {\n var dom = this.dom; // noinspection FallthroughInSwitchStatementJS\n\n switch (elem) {\n case dom.drag:\n return dom.menu;\n\n case dom.menu:\n if (this._hasChilds()) {\n return dom.expand;\n }\n\n // intentional fall through\n\n case dom.expand:\n if (this.fieldEditable) {\n return dom.field;\n }\n\n // intentional fall through\n\n case dom.field:\n if (!this._hasChilds()) {\n return dom.value;\n }\n\n // intentional fall through\n\n default:\n return null;\n }\n }\n /**\n * Get the dom name of given element. returns null if not found.\n * For example when element === dom.field, \"field\" is returned.\n * @param {Element} element\n * @return {String | null} elementName Available elements with name: 'drag',\n * 'menu', 'expand', 'field', 'value'\n * @private\n */\n\n }, {\n key: \"_getElementName\",\n value: function _getElementName(element) {\n var _this2 = this;\n\n return Object.keys(this.dom).find(function (name) {\n return _this2.dom[name] === element;\n });\n }\n /**\n * Test if this node has childs. This is the case when the node is an object\n * or array.\n * @return {boolean} hasChilds\n * @private\n */\n\n }, {\n key: \"_hasChilds\",\n value: function _hasChilds() {\n return this.type === 'array' || this.type === 'object';\n }\n }, {\n key: \"addTemplates\",\n value: function addTemplates(menu, append) {\n var node = this;\n var templates = node.editor.options.templates;\n if (templates == null) return;\n\n if (templates.length) {\n // create a separator\n menu.push({\n type: 'separator'\n });\n }\n\n var appendData = function appendData(name, data) {\n node._onAppend(name, data);\n };\n\n var insertData = function insertData(name, data) {\n node._onInsertBefore(name, data);\n };\n\n templates.forEach(function (template) {\n menu.push({\n text: template.text,\n className: template.className || 'jsoneditor-type-object',\n title: template.title,\n click: append ? appendData.bind(this, template.field, template.value) : insertData.bind(this, template.field, template.value)\n });\n });\n }\n /**\n * Show a contextmenu for this node\n * @param {HTMLElement} anchor Anchor element to attach the context menu to\n * as sibling.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n }, {\n key: \"showContextMenu\",\n value: function showContextMenu(anchor, onClose) {\n var node = this;\n var items = [];\n\n if (this.editable.value) {\n items.push({\n text: Object(i18n[\"c\" /* translate */])('type'),\n title: Object(i18n[\"c\" /* translate */])('typeTitle'),\n className: 'jsoneditor-type-' + this.type,\n submenu: [{\n text: Object(i18n[\"c\" /* translate */])('auto'),\n className: 'jsoneditor-type-auto' + (this.type === 'auto' ? ' jsoneditor-selected' : ''),\n title: Object(i18n[\"c\" /* translate */])('autoType'),\n click: function click() {\n node._onChangeType('auto');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('array'),\n className: 'jsoneditor-type-array' + (this.type === 'array' ? ' jsoneditor-selected' : ''),\n title: Object(i18n[\"c\" /* translate */])('arrayType'),\n click: function click() {\n node._onChangeType('array');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('object'),\n className: 'jsoneditor-type-object' + (this.type === 'object' ? ' jsoneditor-selected' : ''),\n title: Object(i18n[\"c\" /* translate */])('objectType'),\n click: function click() {\n node._onChangeType('object');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('string'),\n className: 'jsoneditor-type-string' + (this.type === 'string' ? ' jsoneditor-selected' : ''),\n title: Object(i18n[\"c\" /* translate */])('stringType'),\n click: function click() {\n node._onChangeType('string');\n }\n }]\n });\n }\n\n if (this._hasChilds()) {\n if (this.editor.options.enableSort) {\n items.push({\n text: Object(i18n[\"c\" /* translate */])('sort'),\n title: Object(i18n[\"c\" /* translate */])('sortTitle', {\n type: this.type\n }),\n className: 'jsoneditor-sort-asc',\n click: function click() {\n node.showSortModal();\n }\n });\n }\n\n if (this.editor.options.enableTransform) {\n items.push({\n text: Object(i18n[\"c\" /* translate */])('transform'),\n title: Object(i18n[\"c\" /* translate */])('transformTitle', {\n type: this.type\n }),\n className: 'jsoneditor-transform',\n click: function click() {\n node.showTransformModal();\n }\n });\n }\n\n if (this.parent) {\n items.push({\n text: Object(i18n[\"c\" /* translate */])('extract'),\n title: Object(i18n[\"c\" /* translate */])('extractTitle', {\n type: this.type\n }),\n className: 'jsoneditor-extract',\n click: function click() {\n node.extract();\n }\n });\n }\n }\n\n if (this.parent && this.parent._hasChilds()) {\n if (items.length) {\n // create a separator\n items.push({\n type: 'separator'\n });\n } // create append button (for last child node only)\n\n\n var childs = node.parent.childs;\n\n if (node === childs[childs.length - 1]) {\n var appendSubmenu = [{\n text: Object(i18n[\"c\" /* translate */])('auto'),\n className: 'jsoneditor-type-auto',\n title: Object(i18n[\"c\" /* translate */])('autoType'),\n click: function click() {\n node._onAppend('', '', 'auto');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('array'),\n className: 'jsoneditor-type-array',\n title: Object(i18n[\"c\" /* translate */])('arrayType'),\n click: function click() {\n node._onAppend('', []);\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('object'),\n className: 'jsoneditor-type-object',\n title: Object(i18n[\"c\" /* translate */])('objectType'),\n click: function click() {\n node._onAppend('', {});\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('string'),\n className: 'jsoneditor-type-string',\n title: Object(i18n[\"c\" /* translate */])('stringType'),\n click: function click() {\n node._onAppend('', '', 'string');\n }\n }];\n node.addTemplates(appendSubmenu, true);\n items.push({\n text: Object(i18n[\"c\" /* translate */])('appendText'),\n title: Object(i18n[\"c\" /* translate */])('appendTitle'),\n submenuTitle: Object(i18n[\"c\" /* translate */])('appendSubmenuTitle'),\n className: 'jsoneditor-append',\n click: function click() {\n node._onAppend('', '', 'auto');\n },\n submenu: appendSubmenu\n });\n } // create insert button\n\n\n var insertSubmenu = [{\n text: Object(i18n[\"c\" /* translate */])('auto'),\n className: 'jsoneditor-type-auto',\n title: Object(i18n[\"c\" /* translate */])('autoType'),\n click: function click() {\n node._onInsertBefore('', '', 'auto');\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('array'),\n className: 'jsoneditor-type-array',\n title: Object(i18n[\"c\" /* translate */])('arrayType'),\n click: function click() {\n node._onInsertBefore('', []);\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('object'),\n className: 'jsoneditor-type-object',\n title: Object(i18n[\"c\" /* translate */])('objectType'),\n click: function click() {\n node._onInsertBefore('', {});\n }\n }, {\n text: Object(i18n[\"c\" /* translate */])('string'),\n className: 'jsoneditor-type-string',\n title: Object(i18n[\"c\" /* translate */])('stringType'),\n click: function click() {\n node._onInsertBefore('', '', 'string');\n }\n }];\n node.addTemplates(insertSubmenu, false);\n items.push({\n text: Object(i18n[\"c\" /* translate */])('insert'),\n title: Object(i18n[\"c\" /* translate */])('insertTitle'),\n submenuTitle: Object(i18n[\"c\" /* translate */])('insertSub'),\n className: 'jsoneditor-insert',\n click: function click() {\n node._onInsertBefore('', '', 'auto');\n },\n submenu: insertSubmenu\n });\n\n if (this.editable.field) {\n // create duplicate button\n items.push({\n text: Object(i18n[\"c\" /* translate */])('duplicateText'),\n title: Object(i18n[\"c\" /* translate */])('duplicateField'),\n className: 'jsoneditor-duplicate',\n click: function click() {\n Node.onDuplicate(node);\n }\n }); // create remove button\n\n items.push({\n text: Object(i18n[\"c\" /* translate */])('removeText'),\n title: Object(i18n[\"c\" /* translate */])('removeField'),\n className: 'jsoneditor-remove',\n click: function click() {\n Node.onRemove(node);\n }\n });\n }\n }\n\n if (this.editor.options.onCreateMenu) {\n var path = node.getPath();\n items = this.editor.options.onCreateMenu(items, {\n type: 'single',\n path: path,\n paths: [path]\n });\n }\n\n var menu = new ContextMenu[\"a\" /* ContextMenu */](items, {\n close: onClose\n });\n menu.show(anchor, this.editor.getPopupAnchor());\n }\n /**\n * Show sorting modal\n */\n\n }, {\n key: \"showSortModal\",\n value: function showSortModal() {\n var node = this;\n var container = this.editor.options.modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */];\n var json = this.getValue();\n\n function onSort(sortedBy) {\n var path = sortedBy.path;\n var pathArray = Object(util[\"parsePath\"])(path);\n node.sortedBy = sortedBy;\n node.sort(pathArray, sortedBy.direction);\n }\n\n Object(js_showSortModal[\"showSortModal\"])(container, json, onSort, node.sortedBy);\n }\n /**\n * Show transform modal\n */\n\n }, {\n key: \"showTransformModal\",\n value: function showTransformModal() {\n var _this3 = this;\n\n var _this$editor$options = this.editor.options,\n modalAnchor = _this$editor$options.modalAnchor,\n createQuery = _this$editor$options.createQuery,\n executeQuery = _this$editor$options.executeQuery,\n queryDescription = _this$editor$options.queryDescription;\n var json = this.getValue();\n\n Object(js_showTransformModal[\"showTransformModal\"])({\n container: modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */],\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: createQuery,\n executeQuery: executeQuery,\n onTransform: function onTransform(query) {\n _this3.transform(query);\n }\n });\n }\n /**\n * get the type of a value\n * @param {*} value\n * @return {String} type Can be 'object', 'array', 'string', 'auto'\n * @private\n */\n\n }, {\n key: \"_getType\",\n value: function _getType(value) {\n if (value instanceof Array) {\n return 'array';\n }\n\n if (value instanceof Object) {\n return 'object';\n }\n\n if (typeof value === 'string' && typeof Object(util[\"parseString\"])(value) !== 'string') {\n return 'string';\n }\n\n return 'auto';\n }\n /**\n * escape a text, such that it can be displayed safely in an HTML element\n * @param {String} text\n * @return {String} escapedText\n * @private\n */\n\n }, {\n key: \"_escapeHTML\",\n value: function _escapeHTML(text) {\n if (typeof text !== 'string') {\n return String(text);\n } else {\n var htmlEscaped = String(text).replace(/&/g, '&amp;') // must be replaced first!\n .replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/ {2}/g, ' &nbsp;') // replace double space with an nbsp and space\n .replace(/^ /, '&nbsp;') // space at start\n .replace(/ $/, '&nbsp;'); // space at end\n\n var json = JSON.stringify(htmlEscaped);\n var html = json.substring(1, json.length - 1);\n\n if (this.editor.options.escapeUnicode === true) {\n html = Object(util[\"escapeUnicodeChars\"])(html);\n }\n\n return html;\n }\n }\n /**\n * unescape a string.\n * @param {String} escapedText\n * @return {String} text\n * @private\n */\n\n }, {\n key: \"_unescapeHTML\",\n value: function _unescapeHTML(escapedText) {\n var json = '\"' + this._escapeJSON(escapedText) + '\"';\n var htmlEscaped = Object(util[\"parse\"])(json);\n return htmlEscaped.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&nbsp;|\\u00A0/g, ' ').replace(/&amp;/g, '&'); // must be replaced last\n }\n /**\n * escape a text to make it a valid JSON string. The method will:\n * - replace unescaped double quotes with '\\\"'\n * - replace unescaped backslash with '\\\\'\n * - replace returns with '\\n'\n * @param {String} text\n * @return {String} escapedText\n * @private\n */\n\n }, {\n key: \"_escapeJSON\",\n value: function _escapeJSON(text) {\n // TODO: replace with some smart regex (only when a new solution is faster!)\n var escaped = '';\n var i = 0;\n\n while (i < text.length) {\n var c = text.charAt(i);\n\n if (c === '\\n') {\n escaped += '\\\\n';\n } else if (c === '\\\\') {\n escaped += c;\n i++;\n c = text.charAt(i);\n\n if (c === '' || '\"\\\\/bfnrtu'.indexOf(c) === -1) {\n escaped += '\\\\'; // no valid escape character\n }\n\n escaped += c;\n } else if (c === '\"') {\n escaped += '\\\\\"';\n } else {\n escaped += c;\n }\n\n i++;\n }\n\n return escaped;\n }\n /**\n * update the object name according to the callback onNodeName\n * @private\n */\n\n }, {\n key: \"updateNodeName\",\n value: function updateNodeName() {\n var count = this.childs ? this.childs.length : 0;\n var nodeName;\n\n if (this.type === 'object' || this.type === 'array') {\n if (this.editor.options.onNodeName) {\n try {\n nodeName = this.editor.options.onNodeName({\n path: this.getPath(),\n size: count,\n type: this.type\n });\n } catch (err) {\n console.error('Error in onNodeName callback: ', err);\n }\n }\n\n this.dom.value.textContent = this.type === 'object' ? '{' + (nodeName || count) + '}' : '[' + (nodeName || count) + ']';\n }\n }\n /**\n * update recursively the object's and its children's name.\n * @private\n */\n\n }, {\n key: \"recursivelyUpdateNodeName\",\n value: function recursivelyUpdateNodeName() {\n if (this.expanded) {\n this.updateNodeName();\n\n if (this.childs !== 'undefined') {\n var i;\n\n for (i in this.childs) {\n this.childs[i].recursivelyUpdateNodeName();\n }\n }\n }\n }\n }]);\n\n return Node;\n}(); // debounce interval for keyboard input in milliseconds\n\nNode_Node.prototype.DEBOUNCE_INTERVAL = 150; // search will stop iterating as soon as the max is reached\n\nNode_Node.prototype.MAX_SEARCH_RESULTS = 999; // default number of child nodes to display\n\nvar DEFAULT_MAX_VISIBLE_CHILDS = 100; // stores the element name currently having the focus\n\nNode_Node.focusElement = undefined;\n/**\n * Select all text in an editable div after a delay of 0 ms\n * @param {Element} editableDiv\n */\n\nNode_Node.select = function (editableDiv) {\n setTimeout(function () {\n Object(util[\"selectContentEditable\"])(editableDiv);\n }, 0);\n};\n/**\n * DragStart event, fired on mousedown on the dragarea at the left side of a Node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode_Node.onDragStart = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node_Node.onDragStart([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var firstNode = nodes[0];\n var lastNode = nodes[nodes.length - 1];\n var parent = firstNode.parent;\n var draggedNode = Node_Node.getNodeFromTarget(event.target);\n var editor = firstNode.editor; // in case of multiple selected nodes, offsetY prevents the selection from\n // jumping when you start dragging one of the lower down nodes in the selection\n\n var offsetY = Object(util[\"getAbsoluteTop\"])(draggedNode.dom.tr) - Object(util[\"getAbsoluteTop\"])(firstNode.dom.tr);\n\n if (!editor.mousemove) {\n editor.mousemove = Object(util[\"addEventListener\"])(event.view, 'mousemove', function (event) {\n Node_Node.onDrag(nodes, event);\n });\n }\n\n if (!editor.mouseup) {\n editor.mouseup = Object(util[\"addEventListener\"])(event.view, 'mouseup', function (event) {\n Node_Node.onDragEnd(nodes, event);\n });\n }\n\n editor.highlighter.lock();\n editor.drag = {\n oldCursor: document.body.style.cursor,\n oldSelection: editor.getDomSelection(),\n oldPaths: nodes.map(getInternalPath),\n oldParent: parent,\n oldNextNode: parent.childs[lastNode.getIndex() + 1] || parent.append,\n oldParentPathRedo: parent.getInternalPath(),\n oldIndexRedo: firstNode.getIndex(),\n mouseX: event.pageX,\n offsetY: offsetY,\n level: firstNode.getLevel()\n };\n document.body.style.cursor = 'move';\n event.preventDefault();\n};\n/**\n * Drag event, fired when moving the mouse while dragging a Node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode_Node.onDrag = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node_Node.onDrag([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n } // TODO: this method has grown too large. Split it in a number of methods\n\n\n var editor = nodes[0].editor;\n var mouseY = event.pageY - editor.drag.offsetY;\n var mouseX = event.pageX;\n var trPrev, trNext, trFirst, trLast, trRoot;\n var nodePrev, nodeNext;\n var topPrev, topFirst, bottomNext, heightNext;\n var moved = false; // TODO: add an ESC option, which resets to the original position\n // move up/down\n\n var firstNode = nodes[0];\n var trThis = firstNode.dom.tr;\n var topThis = Object(util[\"getAbsoluteTop\"])(trThis);\n var heightThis = trThis.offsetHeight;\n\n if (mouseY < topThis) {\n // move up\n trPrev = trThis;\n\n do {\n trPrev = trPrev.previousSibling;\n nodePrev = Node_Node.getNodeFromTarget(trPrev);\n topPrev = trPrev ? Object(util[\"getAbsoluteTop\"])(trPrev) : 0;\n } while (trPrev && mouseY < topPrev);\n\n if (nodePrev && !nodePrev.parent) {\n nodePrev = undefined;\n }\n\n if (!nodePrev) {\n // move to the first node\n trRoot = trThis.parentNode.firstChild;\n trPrev = trRoot ? trRoot.nextSibling : undefined;\n nodePrev = Node_Node.getNodeFromTarget(trPrev);\n\n if (nodePrev === firstNode) {\n nodePrev = undefined;\n }\n }\n\n if (nodePrev && nodePrev.isVisible()) {\n // check if mouseY is really inside the found node\n trPrev = nodePrev.dom.tr;\n topPrev = trPrev ? Object(util[\"getAbsoluteTop\"])(trPrev) : 0;\n\n if (mouseY > topPrev + heightThis) {\n nodePrev = undefined;\n }\n }\n\n if (nodePrev && (editor.options.limitDragging === false || nodePrev.parent === nodes[0].parent)) {\n nodes.forEach(function (node) {\n nodePrev.parent.moveBefore(node, nodePrev);\n });\n moved = true;\n }\n } else {\n // move down\n var lastNode = nodes[nodes.length - 1];\n trLast = lastNode.expanded && lastNode.append ? lastNode.append.getDom() : lastNode.dom.tr;\n trFirst = trLast ? trLast.nextSibling : undefined;\n\n if (trFirst) {\n topFirst = Object(util[\"getAbsoluteTop\"])(trFirst);\n trNext = trFirst;\n\n do {\n nodeNext = Node_Node.getNodeFromTarget(trNext);\n\n if (trNext) {\n bottomNext = trNext.nextSibling ? Object(util[\"getAbsoluteTop\"])(trNext.nextSibling) : 0;\n heightNext = trNext ? bottomNext - topFirst : 0;\n\n if (nodeNext && nodeNext.parent.childs.length === nodes.length && nodeNext.parent.childs[nodes.length - 1] === lastNode) {\n // We are about to remove the last child of this parent,\n // which will make the parents appendNode visible.\n topThis += 27; // TODO: dangerous to suppose the height of the appendNode a constant of 27 px.\n }\n\n trNext = trNext.nextSibling;\n }\n } while (trNext && mouseY > topThis + heightNext);\n\n if (nodeNext && nodeNext.parent) {\n // calculate the desired level\n var diffX = mouseX - editor.drag.mouseX;\n var diffLevel = Math.round(diffX / 24 / 2);\n var level = editor.drag.level + diffLevel; // desired level\n\n var levelNext = nodeNext.getLevel(); // level to be\n // find the best fitting level (move upwards over the append nodes)\n\n trPrev = nodeNext.dom.tr && nodeNext.dom.tr.previousSibling;\n\n while (levelNext < level && trPrev) {\n nodePrev = Node_Node.getNodeFromTarget(trPrev);\n var isDraggedNode = nodes.some(function (node) {\n return node === nodePrev || nodePrev.isDescendantOf(node);\n });\n\n if (isDraggedNode) {// neglect the dragged nodes themselves and their childs\n } else if (nodePrev instanceof Node_AppendNode) {\n var childs = nodePrev.parent.childs;\n\n if (childs.length !== nodes.length || childs[nodes.length - 1] !== lastNode) {\n // non-visible append node of a list of childs\n // consisting of not only this node (else the\n // append node will change into a visible \"empty\"\n // text when removing this node).\n nodeNext = Node_Node.getNodeFromTarget(trPrev);\n levelNext = nodeNext.getLevel();\n } else {\n break;\n }\n } else {\n break;\n }\n\n trPrev = trPrev.previousSibling;\n }\n\n if (nodeNext instanceof Node_AppendNode && !nodeNext.isVisible() && nodeNext.parent.showMore.isVisible()) {\n nodeNext = nodeNext._nextNode();\n } // move the node when its position is changed\n\n\n if (nodeNext && (editor.options.limitDragging === false || nodeNext.parent === nodes[0].parent) && nodeNext.dom.tr && nodeNext.dom.tr !== trLast.nextSibling) {\n nodes.forEach(function (node) {\n nodeNext.parent.moveBefore(node, nodeNext);\n });\n moved = true;\n }\n }\n }\n }\n\n if (moved) {\n // update the dragging parameters when moved\n editor.drag.mouseX = mouseX;\n editor.drag.level = firstNode.getLevel();\n } // auto scroll when hovering around the top of the editor\n\n\n editor.startAutoScroll(mouseY);\n event.preventDefault();\n};\n/**\n * Drag event, fired on mouseup after having dragged a node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode_Node.onDragEnd = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node_Node.onDrag([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var firstNode = nodes[0];\n var editor = firstNode.editor; // set focus to the context menu button of the first node\n\n if (nodes[0]) {\n nodes[0].dom.menu.focus();\n }\n\n var oldParentPath = editor.drag.oldParent.getInternalPath();\n var newParentPath = firstNode.parent.getInternalPath();\n var sameParent = editor.drag.oldParent === firstNode.parent;\n var oldIndex = editor.drag.oldNextNode.getIndex();\n var newIndex = firstNode.getIndex();\n var oldParentPathRedo = editor.drag.oldParentPathRedo;\n var oldIndexRedo = editor.drag.oldIndexRedo;\n var newIndexRedo = sameParent && oldIndexRedo < newIndex ? newIndex + nodes.length : newIndex;\n\n if (!sameParent || oldIndexRedo !== newIndex) {\n // only register this action if the node is actually moved to another place\n editor._onAction('moveNodes', {\n count: nodes.length,\n fieldNames: nodes.map(getField),\n oldParentPath: oldParentPath,\n newParentPath: newParentPath,\n oldIndex: oldIndex,\n newIndex: newIndex,\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: null,\n // This is a hack, value will be filled in during undo\n oldSelection: editor.drag.oldSelection,\n newSelection: editor.getDomSelection()\n });\n }\n\n document.body.style.cursor = editor.drag.oldCursor;\n editor.highlighter.unlock();\n nodes.forEach(function (node) {\n node.updateDom();\n\n if (event.target !== node.dom.drag && event.target !== node.dom.menu) {\n editor.highlighter.unhighlight();\n }\n });\n delete editor.drag;\n\n if (editor.mousemove) {\n Object(util[\"removeEventListener\"])(event.view, 'mousemove', editor.mousemove);\n delete editor.mousemove;\n }\n\n if (editor.mouseup) {\n Object(util[\"removeEventListener\"])(event.view, 'mouseup', editor.mouseup);\n delete editor.mouseup;\n } // Stop any running auto scroll\n\n\n editor.stopAutoScroll();\n event.preventDefault();\n};\n/**\n * find an enum definition in a JSON schema, as property `enum` or inside\n * one of the schemas composites (`oneOf`, `anyOf`, `allOf`)\n * @param {Object} schema\n * @return {Array | null} Returns the enum when found, null otherwise.\n * @private\n */\n\n\nNode_Node._findEnum = function (schema) {\n if (schema[\"enum\"]) {\n return schema[\"enum\"];\n }\n\n var composite = schema.oneOf || schema.anyOf || schema.allOf;\n\n if (composite) {\n var match = composite.filter(function (entry) {\n return entry[\"enum\"];\n });\n\n if (match.length > 0) {\n return match[0][\"enum\"];\n }\n }\n\n return null;\n};\n/**\n * Return the part of a JSON schema matching given path.\n * @param {Object} topLevelSchema\n * @param {Object} schemaRefs\n * @param {Array.<string | number>} path\n * @param {Object} currentSchema\n * @return {Object | null}\n * @private\n */\n\n\nNode_Node._findSchema = function (topLevelSchema, schemaRefs, path) {\n var currentSchema = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : topLevelSchema;\n var nextPath = path.slice(1, path.length);\n var nextKey = path[0];\n var possibleSchemas = currentSchema.oneOf || currentSchema.anyOf || currentSchema.allOf || [currentSchema];\n\n var _iterator = _createForOfIteratorHelper(possibleSchemas),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var schema = _step.value;\n currentSchema = schema;\n\n if ('$ref' in currentSchema && typeof currentSchema.$ref === 'string') {\n var ref = currentSchema.$ref;\n\n if (ref in schemaRefs) {\n currentSchema = schemaRefs[ref];\n } else if (ref.startsWith('#/')) {\n var refPath = ref.substring(2).split('/');\n currentSchema = topLevelSchema;\n\n var _iterator2 = _createForOfIteratorHelper(refPath),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var segment = _step2.value;\n\n if (segment in currentSchema) {\n currentSchema = currentSchema[segment];\n } else {\n throw Error(\"Unable to resovle reference \".concat(ref));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n throw Error(\"Unable to resolve reference \".concat(ref));\n }\n } // We have no more path segments to resolve, return the currently found schema\n // We do this here, after resolving references, in case of the leaf schema beeing a reference\n\n\n if (nextKey === undefined) {\n return currentSchema;\n }\n\n if (typeof nextKey === 'string') {\n if (_typeof(currentSchema.properties) === 'object' && currentSchema.properties !== null && nextKey in currentSchema.properties) {\n currentSchema = currentSchema.properties[nextKey];\n return Node_Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n\n if (_typeof(currentSchema.patternProperties) === 'object' && currentSchema.patternProperties !== null) {\n for (var prop in currentSchema.patternProperties) {\n if (nextKey.match(prop)) {\n currentSchema = currentSchema.patternProperties[prop];\n return Node_Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n }\n }\n\n continue;\n }\n\n if (typeof nextKey === 'number' && _typeof(currentSchema.items) === 'object' && currentSchema.items !== null) {\n currentSchema = currentSchema.items;\n return Node_Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n};\n/**\n * Remove nodes\n * @param {Node[] | Node} nodes\n */\n\n\nNode_Node.onRemove = function (nodes) {\n if (!Array.isArray(nodes)) {\n return Node_Node.onRemove([nodes]);\n }\n\n if (nodes && nodes.length > 0) {\n var firstNode = nodes[0];\n var parent = firstNode.parent;\n var editor = firstNode.editor;\n var firstIndex = firstNode.getIndex();\n editor.highlighter.unhighlight(); // adjust the focus\n\n var oldSelection = editor.getDomSelection();\n Node_Node.blurNodes(nodes);\n var newSelection = editor.getDomSelection(); // store the paths before removing them (needed for history)\n\n var paths = nodes.map(getInternalPath); // remove the nodes\n\n nodes.forEach(function (node) {\n node.parent._remove(node);\n }); // store history action\n\n editor._onAction('removeNodes', {\n nodes: nodes,\n paths: paths,\n parentPath: parent.getInternalPath(),\n index: firstIndex,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n};\n/**\n * Duplicate nodes\n * duplicated nodes will be added right after the original nodes\n * @param {Node[] | Node} nodes\n */\n\n\nNode_Node.onDuplicate = function (nodes) {\n if (!Array.isArray(nodes)) {\n return Node_Node.onDuplicate([nodes]);\n }\n\n if (nodes && nodes.length > 0) {\n var lastNode = nodes[nodes.length - 1];\n var parent = lastNode.parent;\n var editor = lastNode.editor;\n editor.deselect(editor.multiselection.nodes); // duplicate the nodes\n\n var oldSelection = editor.getDomSelection();\n var afterNode = lastNode;\n var clones = nodes.map(function (node) {\n var clone = node.clone();\n\n if (node.parent.type === 'object') {\n var existingFieldNames = node.parent.getFieldNames();\n clone.field = Object(util[\"findUniqueName\"])(node.field, existingFieldNames);\n }\n\n parent.insertAfter(clone, afterNode);\n afterNode = clone;\n return clone;\n }); // set selection to the duplicated nodes\n\n if (nodes.length === 1) {\n if (clones[0].parent.type === 'object') {\n // when duplicating a single object property,\n // set focus to the field and keep the original field name\n clones[0].dom.field.innerHTML = nodes[0]._escapeHTML(nodes[0].field);\n clones[0].focus('field');\n } else {\n clones[0].focus();\n }\n } else {\n editor.select(clones);\n }\n\n var newSelection = editor.getDomSelection();\n\n editor._onAction('duplicateNodes', {\n paths: nodes.map(getInternalPath),\n clonePaths: clones.map(getInternalPath),\n afterPath: lastNode.getInternalPath(),\n parentPath: parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n};\n/**\n * Find the node from an event target\n * @param {HTMLElement} target\n * @return {Node | undefined} node or undefined when not found\n * @static\n */\n\n\nNode_Node.getNodeFromTarget = function (target) {\n while (target) {\n if (target.node) {\n return target.node;\n }\n\n target = target.parentNode;\n }\n\n return undefined;\n};\n/**\n * Test whether target is a child of the color DOM of a node\n * @param {HTMLElement} target\n * @returns {boolean}\n */\n\n\nNode_Node.targetIsColorPicker = function (target) {\n var node = Node_Node.getNodeFromTarget(target);\n\n if (node) {\n var parent = target && target.parentNode;\n\n while (parent) {\n if (parent === node.dom.color) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n }\n\n return false;\n};\n/**\n * Remove the focus of given nodes, and move the focus to the (a) node before,\n * (b) the node after, or (c) the parent node.\n * @param {Array.<Node> | Node} nodes\n */\n\n\nNode_Node.blurNodes = function (nodes) {\n if (!Array.isArray(nodes)) {\n Node_Node.blurNodes([nodes]);\n return;\n }\n\n var firstNode = nodes[0];\n var parent = firstNode.parent;\n var firstIndex = firstNode.getIndex();\n\n if (parent.childs[firstIndex + nodes.length]) {\n parent.childs[firstIndex + nodes.length].focus();\n } else if (parent.childs[firstIndex - 1]) {\n parent.childs[firstIndex - 1].focus();\n } else {\n parent.focus();\n }\n}; // helper function to get the internal path of a node\n\n\nfunction getInternalPath(node) {\n return node.getInternalPath();\n} // helper function to get the field of a node\n\n\nfunction getField(node) {\n return node.getField();\n}\n\nfunction Node_hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n} // TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode\n// idea: introduce properties .isAppendNode and .isNode and use that instead of instanceof AppendNode checks\n\n\nvar Node_AppendNode = appendNodeFactory(Node_Node);\nvar Node_ShowMoreNode = showMoreNodeFactory(Node_Node);\n// CONCATENATED MODULE: ./src/js/NodeHistory.js\n\n\nfunction NodeHistory_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction NodeHistory_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction NodeHistory_createClass(Constructor, protoProps, staticProps) { if (protoProps) NodeHistory_defineProperties(Constructor.prototype, protoProps); if (staticProps) NodeHistory_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * @constructor History\n * Store action history, enables undo and redo\n * @param {JSONEditor} editor\n */\n\nvar NodeHistory_NodeHistory = /*#__PURE__*/function () {\n function NodeHistory(editor) {\n NodeHistory_classCallCheck(this, NodeHistory);\n\n this.editor = editor;\n this.history = [];\n this.index = -1;\n this.clear(); // helper function to find a Node from a path\n\n function findNode(path) {\n return editor.node.findNodeByInternalPath(path);\n } // map with all supported actions\n\n\n this.actions = {\n editField: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n var node = parentNode.childs[params.index];\n node.updateField(params.oldValue);\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var node = parentNode.childs[params.index];\n node.updateField(params.newValue);\n }\n },\n editValue: {\n undo: function undo(params) {\n findNode(params.path).updateValue(params.oldValue);\n },\n redo: function redo(params) {\n findNode(params.path).updateValue(params.newValue);\n }\n },\n changeType: {\n undo: function undo(params) {\n findNode(params.path).changeType(params.oldType);\n },\n redo: function redo(params) {\n findNode(params.path).changeType(params.newType);\n }\n },\n appendNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n params.nodes.forEach(function (node) {\n parentNode.appendChild(node);\n });\n }\n },\n insertBeforeNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var beforeNode = findNode(params.beforePath);\n params.nodes.forEach(function (node) {\n parentNode.insertBefore(node, beforeNode);\n });\n }\n },\n insertAfterNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var afterNode = findNode(params.afterPath);\n params.nodes.forEach(function (node) {\n parentNode.insertAfter(node, afterNode);\n afterNode = node;\n });\n }\n },\n removeNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n var beforeNode = parentNode.childs[params.index] || parentNode.append;\n params.nodes.forEach(function (node) {\n parentNode.insertBefore(node, beforeNode);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n }\n },\n duplicateNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.clonePaths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var afterNode = findNode(params.afterPath);\n var nodes = params.paths.map(findNode);\n nodes.forEach(function (node) {\n var clone = node.clone();\n\n if (parentNode.type === 'object') {\n var existingFieldNames = parentNode.getFieldNames();\n clone.field = Object(util[\"findUniqueName\"])(node.field, existingFieldNames);\n }\n\n parentNode.insertAfter(clone, afterNode);\n afterNode = clone;\n });\n }\n },\n moveNodes: {\n undo: function undo(params) {\n var oldParentNode = findNode(params.oldParentPath);\n var newParentNode = findNode(params.newParentPath);\n var oldBeforeNode = oldParentNode.childs[params.oldIndex] || oldParentNode.append; // first copy the nodes, then move them\n\n var nodes = newParentNode.childs.slice(params.newIndex, params.newIndex + params.count);\n nodes.forEach(function (node, index) {\n node.field = params.fieldNames[index];\n oldParentNode.moveBefore(node, oldBeforeNode);\n }); // This is a hack to work around an issue that we don't know tha original\n // path of the new parent after dragging, as the node is already moved at that time.\n\n if (params.newParentPathRedo === null) {\n params.newParentPathRedo = newParentNode.getInternalPath();\n }\n },\n redo: function redo(params) {\n var oldParentNode = findNode(params.oldParentPathRedo);\n var newParentNode = findNode(params.newParentPathRedo);\n var newBeforeNode = newParentNode.childs[params.newIndexRedo] || newParentNode.append; // first copy the nodes, then move them\n\n var nodes = oldParentNode.childs.slice(params.oldIndexRedo, params.oldIndexRedo + params.count);\n nodes.forEach(function (node, index) {\n node.field = params.fieldNames[index];\n newParentNode.moveBefore(node, newBeforeNode);\n });\n }\n },\n sort: {\n undo: function undo(params) {\n var node = findNode(params.path);\n node.hideChilds();\n node.childs = params.oldChilds;\n node.updateDom({\n updateIndexes: true\n });\n node.showChilds();\n },\n redo: function redo(params) {\n var node = findNode(params.path);\n node.hideChilds();\n node.childs = params.newChilds;\n node.updateDom({\n updateIndexes: true\n });\n node.showChilds();\n }\n },\n transform: {\n undo: function undo(params) {\n findNode(params.path).setInternalValue(params.oldValue); // TODO: would be nice to restore the state of the node and childs\n },\n redo: function redo(params) {\n findNode(params.path).setInternalValue(params.newValue); // TODO: would be nice to restore the state of the node and childs\n }\n } // TODO: restore the original caret position and selection with each undo\n // TODO: implement history for actions \"expand\", \"collapse\", \"scroll\", \"setDocument\"\n\n };\n }\n /**\n * The method onChange is executed when the History is changed, and can\n * be overloaded.\n */\n\n\n NodeHistory_createClass(NodeHistory, [{\n key: \"onChange\",\n value: function onChange() {}\n /**\n * Add a new action to the history\n * @param {String} action The executed action. Available actions: \"editField\",\n * \"editValue\", \"changeType\", \"appendNode\",\n * \"removeNode\", \"duplicateNode\", \"moveNode\"\n * @param {Object} params Object containing parameters describing the change.\n * The parameters in params depend on the action (for\n * example for \"editValue\" the Node, old value, and new\n * value are provided). params contains all information\n * needed to undo or redo the action.\n */\n\n }, {\n key: \"add\",\n value: function add(action, params) {\n this.index++;\n this.history[this.index] = {\n action: action,\n params: params,\n timestamp: new Date()\n }; // remove redo actions which are invalid now\n\n if (this.index < this.history.length - 1) {\n this.history.splice(this.index + 1, this.history.length - this.index - 1);\n } // fire onchange event\n\n\n this.onChange();\n }\n /**\n * Clear history\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.history = [];\n this.index = -1; // fire onchange event\n\n this.onChange();\n }\n /**\n * Check if there is an action available for undo\n * @return {Boolean} canUndo\n */\n\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.index >= 0;\n }\n /**\n * Check if there is an action available for redo\n * @return {Boolean} canRedo\n */\n\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.index < this.history.length - 1;\n }\n /**\n * Undo the last action\n */\n\n }, {\n key: \"undo\",\n value: function undo() {\n if (this.canUndo()) {\n var obj = this.history[this.index];\n\n if (obj) {\n var action = this.actions[obj.action];\n\n if (action && action.undo) {\n action.undo(obj.params);\n\n if (obj.params.oldSelection) {\n try {\n this.editor.setDomSelection(obj.params.oldSelection);\n } catch (err) {\n console.error(err);\n }\n }\n } else {\n console.error(new Error('unknown action \"' + obj.action + '\"'));\n }\n }\n\n this.index--; // fire onchange event\n\n this.onChange();\n }\n }\n /**\n * Redo the last action\n */\n\n }, {\n key: \"redo\",\n value: function redo() {\n if (this.canRedo()) {\n this.index++;\n var obj = this.history[this.index];\n\n if (obj) {\n var action = this.actions[obj.action];\n\n if (action && action.redo) {\n action.redo(obj.params);\n\n if (obj.params.newSelection) {\n try {\n this.editor.setDomSelection(obj.params.newSelection);\n } catch (err) {\n console.error(err);\n }\n }\n } else {\n console.error(new Error('unknown action \"' + obj.action + '\"'));\n }\n } // fire onchange event\n\n\n this.onChange();\n }\n }\n /**\n * Destroy history\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.editor = null;\n this.history = [];\n this.index = -1;\n }\n }]);\n\n return NodeHistory;\n}();\n// CONCATENATED MODULE: ./src/js/SearchBox.js\n\n\nfunction SearchBox_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SearchBox_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction SearchBox_createClass(Constructor, protoProps, staticProps) { if (protoProps) SearchBox_defineProperties(Constructor.prototype, protoProps); if (staticProps) SearchBox_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * @constructor SearchBox\n * Create a search box in given HTML container\n * @param {JSONEditor} editor The JSON Editor to attach to\n * @param {Element} container HTML container element of where to\n * create the search box\n */\n\nvar SearchBox_SearchBox = /*#__PURE__*/function () {\n function SearchBox(editor, container) {\n SearchBox_classCallCheck(this, SearchBox);\n\n var searchBox = this;\n this.editor = editor;\n this.timeout = undefined;\n this.delay = 200; // ms\n\n this.lastText = undefined;\n this.results = null;\n this.dom = {};\n this.dom.container = container;\n var wrapper = document.createElement('div');\n this.dom.wrapper = wrapper;\n wrapper.className = 'jsoneditor-search';\n container.appendChild(wrapper);\n var results = document.createElement('div');\n this.dom.results = results;\n results.className = 'jsoneditor-results';\n wrapper.appendChild(results);\n var divInput = document.createElement('div');\n this.dom.input = divInput;\n divInput.className = 'jsoneditor-frame';\n divInput.title = Object(i18n[\"c\" /* translate */])('searchTitle');\n wrapper.appendChild(divInput);\n var refreshSearch = document.createElement('button');\n refreshSearch.type = 'button';\n refreshSearch.className = 'jsoneditor-refresh';\n divInput.appendChild(refreshSearch);\n var search = document.createElement('input');\n search.type = 'text';\n this.dom.search = search;\n\n search.oninput = function (event) {\n searchBox._onDelayedSearch(event);\n };\n\n search.onchange = function (event) {\n // For IE 9\n searchBox._onSearch();\n };\n\n search.onkeydown = function (event) {\n searchBox._onKeyDown(event);\n };\n\n search.onkeyup = function (event) {\n searchBox._onKeyUp(event);\n };\n\n refreshSearch.onclick = function (event) {\n search.select();\n }; // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819\n\n\n divInput.appendChild(search);\n var searchNext = document.createElement('button');\n searchNext.type = 'button';\n searchNext.title = Object(i18n[\"c\" /* translate */])('searchNextResultTitle');\n searchNext.className = 'jsoneditor-next';\n\n searchNext.onclick = function () {\n searchBox.next();\n };\n\n divInput.appendChild(searchNext);\n var searchPrevious = document.createElement('button');\n searchPrevious.type = 'button';\n searchPrevious.title = Object(i18n[\"c\" /* translate */])('searchPreviousResultTitle');\n searchPrevious.className = 'jsoneditor-previous';\n\n searchPrevious.onclick = function () {\n searchBox.previous();\n };\n\n divInput.appendChild(searchPrevious);\n }\n /**\n * Go to the next search result\n * @param {boolean} [focus] If true, focus will be set to the next result\n * focus is false by default.\n */\n\n\n SearchBox_createClass(SearchBox, [{\n key: \"next\",\n value: function next(focus) {\n if (this.results) {\n var index = this.resultIndex !== null ? this.resultIndex + 1 : 0;\n\n if (index > this.results.length - 1) {\n index = 0;\n }\n\n this._setActiveResult(index, focus);\n }\n }\n /**\n * Go to the prevous search result\n * @param {boolean} [focus] If true, focus will be set to the next result\n * focus is false by default.\n */\n\n }, {\n key: \"previous\",\n value: function previous(focus) {\n if (this.results) {\n var max = this.results.length - 1;\n var index = this.resultIndex !== null ? this.resultIndex - 1 : max;\n\n if (index < 0) {\n index = max;\n }\n\n this._setActiveResult(index, focus);\n }\n }\n /**\n * Set new value for the current active result\n * @param {Number} index\n * @param {boolean} [focus] If true, focus will be set to the next result.\n * focus is false by default.\n * @private\n */\n\n }, {\n key: \"_setActiveResult\",\n value: function _setActiveResult(index, focus) {\n // de-activate current active result\n if (this.activeResult) {\n var prevNode = this.activeResult.node;\n var prevElem = this.activeResult.elem;\n\n if (prevElem === 'field') {\n delete prevNode.searchFieldActive;\n } else {\n delete prevNode.searchValueActive;\n }\n\n prevNode.updateDom();\n }\n\n if (!this.results || !this.results[index]) {\n // out of range, set to undefined\n this.resultIndex = undefined;\n this.activeResult = undefined;\n return;\n }\n\n this.resultIndex = index; // set new node active\n\n var node = this.results[this.resultIndex].node;\n var elem = this.results[this.resultIndex].elem;\n\n if (elem === 'field') {\n node.searchFieldActive = true;\n } else {\n node.searchValueActive = true;\n }\n\n this.activeResult = this.results[this.resultIndex];\n node.updateDom(); // TODO: not so nice that the focus is only set after the animation is finished\n\n node.scrollTo(function () {\n if (focus) {\n node.focus(elem);\n }\n });\n }\n /**\n * Cancel any running onDelayedSearch.\n * @private\n */\n\n }, {\n key: \"_clearDelay\",\n value: function _clearDelay() {\n if (this.timeout !== undefined) {\n clearTimeout(this.timeout);\n delete this.timeout;\n }\n }\n /**\n * Start a timer to execute a search after a short delay.\n * Used for reducing the number of searches while typing.\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onDelayedSearch\",\n value: function _onDelayedSearch(event) {\n // execute the search after a short delay (reduces the number of\n // search actions while typing in the search text box)\n this._clearDelay();\n\n var searchBox = this;\n this.timeout = setTimeout(function (event) {\n searchBox._onSearch();\n }, this.delay);\n }\n /**\n * Handle onSearch event\n * @param {boolean} [forceSearch] If true, search will be executed again even\n * when the search text is not changed.\n * Default is false.\n * @private\n */\n\n }, {\n key: \"_onSearch\",\n value: function _onSearch(forceSearch) {\n this._clearDelay();\n\n var value = this.dom.search.value;\n var text = value.length > 0 ? value : undefined;\n\n if (text !== this.lastText || forceSearch) {\n // only search again when changed\n this.lastText = text;\n this.results = this.editor.search(text);\n var MAX_SEARCH_RESULTS = this.results[0] ? this.results[0].node.MAX_SEARCH_RESULTS : Infinity; // try to maintain the current active result if this is still part of the new search results\n\n var activeResultIndex = 0;\n\n if (this.activeResult) {\n for (var i = 0; i < this.results.length; i++) {\n if (this.results[i].node === this.activeResult.node) {\n activeResultIndex = i;\n break;\n }\n }\n }\n\n this._setActiveResult(activeResultIndex, false); // display search results\n\n\n if (text !== undefined) {\n var resultCount = this.results.length;\n\n if (resultCount === 0) {\n this.dom.results.textContent = \"no\\xA0results\";\n } else if (resultCount === 1) {\n this.dom.results.textContent = \"1\\xA0result\";\n } else if (resultCount > MAX_SEARCH_RESULTS) {\n this.dom.results.textContent = MAX_SEARCH_RESULTS + \"+\\xA0results\";\n } else {\n this.dom.results.textContent = resultCount + \"\\xA0results\";\n }\n } else {\n this.dom.results.textContent = '';\n }\n }\n }\n /**\n * Handle onKeyDown event in the input box\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var keynum = event.which;\n\n if (keynum === 27) {\n // ESC\n this.dom.search.value = ''; // clear search\n\n this._onSearch();\n\n event.preventDefault();\n event.stopPropagation();\n } else if (keynum === 13) {\n // Enter\n if (event.ctrlKey) {\n // force to search again\n this._onSearch(true);\n } else if (event.shiftKey) {\n // move to the previous search result\n this.previous();\n } else {\n // move to the next search result\n this.next();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /**\n * Handle onKeyUp event in the input box\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyUp\",\n value: function _onKeyUp(event) {\n var keynum = event.keyCode;\n\n if (keynum !== 27 && keynum !== 13) {\n // !show and !Enter\n this._onDelayedSearch(event); // For IE 9\n\n }\n }\n /**\n * Clear the search results\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.dom.search.value = '';\n\n this._onSearch();\n }\n /**\n * Refresh searchResults if there is a search value\n */\n\n }, {\n key: \"forceSearch\",\n value: function forceSearch() {\n this._onSearch(true);\n }\n /**\n * Test whether the search box value is empty\n * @returns {boolean} Returns true when empty.\n */\n\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.dom.search.value === '';\n }\n /**\n * Destroy the search box\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.editor = null;\n this.dom.container.removeChild(this.dom.wrapper);\n this.dom = null;\n this.results = null;\n this.activeResult = null;\n\n this._clearDelay();\n }\n }]);\n\n return SearchBox;\n}();\n// CONCATENATED MODULE: ./src/js/TreePath.js\n\n\nfunction TreePath_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TreePath_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction TreePath_createClass(Constructor, protoProps, staticProps) { if (protoProps) TreePath_defineProperties(Constructor.prototype, protoProps); if (staticProps) TreePath_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n/**\n * Creates a component that visualize path selection in tree based editors\n * @param {HTMLElement} container\n * @param {HTMLElement} root\n * @constructor\n */\n\nvar TreePath_TreePath = /*#__PURE__*/function () {\n function TreePath(container, root) {\n TreePath_classCallCheck(this, TreePath);\n\n if (container) {\n this.root = root;\n this.path = document.createElement('div');\n this.path.className = 'jsoneditor-treepath';\n this.path.setAttribute('tabindex', 0);\n this.contentMenuClicked = false;\n container.appendChild(this.path);\n this.reset();\n }\n }\n /**\n * Reset component to initial status\n */\n\n\n TreePath_createClass(TreePath, [{\n key: \"reset\",\n value: function reset() {\n this.path.textContent = Object(i18n[\"c\" /* translate */])('selectNode');\n }\n /**\n * Renders the component UI according to a given path objects\n * @param {Array<{name: String, childs: Array}>} pathObjs a list of path objects\n *\n */\n\n }, {\n key: \"setPath\",\n value: function setPath(pathObjs) {\n var me = this;\n this.path.textContent = '';\n\n if (pathObjs && pathObjs.length) {\n pathObjs.forEach(function (pathObj, idx) {\n var pathEl = document.createElement('span');\n var sepEl;\n pathEl.className = 'jsoneditor-treepath-element';\n pathEl.innerText = pathObj.name;\n pathEl.onclick = _onSegmentClick.bind(me, pathObj);\n me.path.appendChild(pathEl);\n\n if (pathObj.children.length) {\n sepEl = document.createElement('span');\n sepEl.className = 'jsoneditor-treepath-seperator';\n sepEl.textContent = \"\\u25BA\";\n\n sepEl.onclick = function () {\n me.contentMenuClicked = true;\n var items = [];\n pathObj.children.forEach(function (child) {\n items.push({\n text: child.name,\n className: 'jsoneditor-type-modes' + (pathObjs[idx + 1] + 1 && pathObjs[idx + 1].name === child.name ? ' jsoneditor-selected' : ''),\n click: _onContextMenuItemClick.bind(me, pathObj, child.name)\n });\n });\n var menu = new ContextMenu[\"a\" /* ContextMenu */](items, {\n limitHeight: true\n });\n menu.show(sepEl, me.root, true);\n };\n\n me.path.appendChild(sepEl);\n }\n\n if (idx === pathObjs.length - 1) {\n var leftRectPos = (sepEl || pathEl).getBoundingClientRect().right;\n\n if (me.path.offsetWidth < leftRectPos) {\n me.path.scrollLeft = leftRectPos;\n }\n\n if (me.path.scrollLeft) {\n var showAllBtn = document.createElement('span');\n showAllBtn.className = 'jsoneditor-treepath-show-all-btn';\n showAllBtn.title = 'show all path';\n showAllBtn.textContent = '...';\n showAllBtn.onclick = _onShowAllClick.bind(me, pathObjs);\n me.path.insertBefore(showAllBtn, me.path.firstChild);\n }\n }\n });\n }\n\n function _onShowAllClick(pathObjs) {\n me.contentMenuClicked = false;\n Object(util[\"addClassName\"])(me.path, 'show-all');\n me.path.style.width = me.path.parentNode.getBoundingClientRect().width - 10 + 'px';\n\n me.path.onblur = function () {\n if (me.contentMenuClicked) {\n me.contentMenuClicked = false;\n me.path.focus();\n return;\n }\n\n Object(util[\"removeClassName\"])(me.path, 'show-all');\n me.path.onblur = undefined;\n me.path.style.width = '';\n me.setPath(pathObjs);\n };\n }\n\n function _onSegmentClick(pathObj) {\n if (this.selectionCallback) {\n this.selectionCallback(pathObj);\n }\n }\n\n function _onContextMenuItemClick(pathObj, selection) {\n if (this.contextMenuCallback) {\n this.contextMenuCallback(pathObj, selection);\n }\n }\n }\n /**\n * set a callback function for selection of path section\n * @param {Function} callback function to invoke when section is selected\n */\n\n }, {\n key: \"onSectionSelected\",\n value: function onSectionSelected(callback) {\n if (typeof callback === 'function') {\n this.selectionCallback = callback;\n }\n }\n /**\n * set a callback function for selection of path section\n * @param {Function} callback function to invoke when section is selected\n */\n\n }, {\n key: \"onContextMenuItemSelected\",\n value: function onContextMenuItemSelected(callback) {\n if (typeof callback === 'function') {\n this.contextMenuCallback = callback;\n }\n }\n }]);\n\n return TreePath;\n}();\n// EXTERNAL MODULE: ./src/js/vanilla-picker/index.js\nvar vanilla_picker = __webpack_require__(13);\nvar vanilla_picker_default = /*#__PURE__*/__webpack_require__.n(vanilla_picker);\n\n// CONCATENATED MODULE: ./src/js/treemode.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // create a mixin with the functions for tree mode\n\nvar treemode = {};\n/**\n * Create a tree editor\n * @param {Element} container Container element\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\ntreemode.create = function (container, options) {\n if (!container) {\n throw new Error('No container element provided.');\n }\n\n this.container = container;\n this.dom = {};\n this.highlighter = new Highlighter();\n this.selection = undefined; // will hold the last input selection\n\n this.multiselection = {\n nodes: []\n };\n this.validateSchema = null; // will be set in .setSchema(schema)\n\n this.validationSequence = 0;\n this.errorNodes = [];\n this.lastSchemaErrors = undefined;\n this.node = null;\n this.focusTarget = null;\n\n this._setOptions(options);\n\n if (options.autocomplete) {\n this.autocomplete = autocomplete(options.autocomplete);\n }\n\n if (this.options.history && this.options.mode !== 'view') {\n this.history = new NodeHistory_NodeHistory(this);\n }\n\n this._createFrame();\n\n this._createTable();\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\ntreemode.destroy = function () {\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n this.frame = null;\n }\n\n this.container = null;\n this.dom = null;\n this.clear();\n this.node = null;\n this.focusTarget = null;\n this.selection = null;\n this.multiselection = null;\n this.errorNodes = null;\n this.validateSchema = null;\n this._debouncedValidate = null;\n\n if (this.history) {\n this.history.destroy();\n this.history = null;\n }\n\n if (this.searchBox) {\n this.searchBox.destroy();\n this.searchBox = null;\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n } // Removing the FocusTracker set to track the editor's focus event\n\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Initialize and set default options\n * @param {Object} [options] See description in constructor\n * @private\n */\n\n\ntreemode._setOptions = function (options) {\n var _this = this;\n\n this.options = {\n search: true,\n history: true,\n mode: 'tree',\n name: undefined,\n // field name of root node\n schema: null,\n schemaRefs: null,\n autocomplete: null,\n navigationBar: true,\n mainMenuBar: true,\n limitDragging: false,\n onSelectionChange: null,\n colorPicker: true,\n onColorPicker: function onColorPicker(parent, color, onChange) {\n if (vanilla_picker_default.a) {\n // we'll render the color picker on top\n // when there is not enough space below, and there is enough space above\n var pickerHeight = 300; // estimated height of the color picker\n\n var top = parent.getBoundingClientRect().top;\n var windowHeight = Object(util[\"getWindow\"])(parent).innerHeight;\n var showOnTop = windowHeight - top < pickerHeight && top > pickerHeight;\n new vanilla_picker_default.a({\n parent: parent,\n color: color,\n popup: showOnTop ? 'top' : 'bottom',\n onDone: function onDone(color) {\n var alpha = color.rgba[3];\n var hex = alpha === 1 ? color.hex.substr(0, 7) // return #RRGGBB\n : color.hex; // return #RRGGBBAA\n\n onChange(hex);\n }\n }).show();\n } else {\n console.warn('Cannot open color picker: the `vanilla-picker` library is not included in the bundle. ' + 'Either use the full bundle or implement your own color picker using `onColorPicker`.');\n }\n },\n timestampTag: true,\n timestampFormat: null,\n createQuery: jmespathQuery[\"a\" /* createQuery */],\n executeQuery: jmespathQuery[\"b\" /* executeQuery */],\n onEvent: null,\n enableSort: true,\n enableTransform: true\n }; // copy all options\n\n if (options) {\n Object.keys(options).forEach(function (prop) {\n _this.options[prop] = options[prop];\n }); // default limitDragging to true when a JSON schema is defined\n\n if (options.limitDragging == null && options.schema != null) {\n this.options.limitDragging = true;\n }\n } // compile a JSON schema validator if a JSON schema is provided\n\n\n this.setSchema(this.options.schema, this.options.schemaRefs); // create a debounced validate function\n\n this._debouncedValidate = Object(util[\"debounce\"])(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\n\n if (options.onSelectionChange) {\n this.onSelectionChange(options.onSelectionChange);\n }\n\n Object(i18n[\"b\" /* setLanguages */])(this.options.languages);\n Object(i18n[\"a\" /* setLanguage */])(this.options.language);\n};\n/**\n * Set new JSON object in editor.\n * Resets the state of the editor (expanded nodes, search, selection).\n *\n * @param {*} json\n */\n\n\ntreemode.set = function (json) {\n // verify if json is valid JSON, ignore when a function\n if (json instanceof Function || json === undefined) {\n this.clear();\n } else {\n this.content.removeChild(this.table); // Take the table offline\n // replace the root node\n\n var params = {\n field: this.options.name,\n value: json\n };\n var node = new Node_Node(this, params);\n\n this._setRoot(node); // validate JSON schema (if configured)\n\n\n this.validate(); // expand\n\n var recurse = false;\n this.node.expand(recurse);\n this.content.appendChild(this.table); // Put the table online again\n } // TODO: maintain history, store last state and previous document\n\n\n if (this.history) {\n this.history.clear();\n } // clear search\n\n\n if (this.searchBox) {\n this.searchBox.clear();\n }\n};\n/**\n * Update JSON object in editor.\n * Maintains the state of the editor (expanded nodes, search, selection).\n *\n * @param {*} json\n */\n\n\ntreemode.update = function (json) {\n // don't update if there are no changes\n if (this.node.deepEqual(json)) {\n return;\n }\n\n var selection = this.getSelection(); // apply the changed json\n\n this.onChangeDisabled = true; // don't fire an onChange event\n\n this.node.update(json);\n this.onChangeDisabled = false; // validate JSON schema\n\n this.validate(); // update search result if any\n\n if (this.searchBox && !this.searchBox.isEmpty()) {\n this.searchBox.forceSearch();\n } // update selection if any\n\n\n if (selection && selection.start && selection.end) {\n // only keep/update the selection if both start and end node still exists,\n // else we clear the selection\n var startNode = this.node.findNodeByPath(selection.start.path);\n var endNode = this.node.findNodeByPath(selection.end.path);\n\n if (startNode && endNode) {\n this.setSelection(selection.start, selection.end);\n } else {\n this.setSelection({}, {}); // clear selection\n }\n } else {\n this.setSelection({}, {}); // clear selection\n }\n};\n/**\n * Get JSON object from editor\n * @return {Object | undefined} json\n */\n\n\ntreemode.get = function () {\n // TODO: resolve pending debounced input changes if any, but do not resolve invalid inputs\n if (this.node) {\n return this.node.getValue();\n } else {\n return undefined;\n }\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\ntreemode.getText = function () {\n return JSON.stringify(this.get());\n};\n/**\n * Set the text contents of the editor.\n * Resets the state of the editor (expanded nodes, search, selection).\n * @param {String} jsonText\n */\n\n\ntreemode.setText = function (jsonText) {\n try {\n this.set(Object(util[\"parse\"])(jsonText)); // this can throw an error\n } catch (err) {\n // try to repair json, replace JavaScript notation with JSON notation\n var repairedJsonText = Object(util[\"trySimpleJsonRepair\"])(jsonText); // try to parse again\n\n this.set(Object(util[\"parse\"])(repairedJsonText)); // this can throw an error\n }\n};\n/**\n * Update the text contents of the editor.\n * Maintains the state of the editor (expanded nodes, search, selection).\n * @param {String} jsonText\n */\n\n\ntreemode.updateText = function (jsonText) {\n try {\n this.update(Object(util[\"parse\"])(jsonText)); // this can throw an error\n } catch (err) {\n // try to repair json, replace JavaScript notation with JSON notation\n var repairJsonText = Object(util[\"trySimpleJsonRepair\"])(jsonText); // try to parse again\n\n this.update(Object(util[\"parse\"])(repairJsonText)); // this can throw an error\n }\n};\n/**\n * Set a field name for the root node.\n * @param {String | undefined} name\n */\n\n\ntreemode.setName = function (name) {\n this.options.name = name;\n\n if (this.node) {\n this.node.updateField(this.options.name);\n }\n};\n/**\n * Get the field name for the root node.\n * @return {String | undefined} name\n */\n\n\ntreemode.getName = function () {\n return this.options.name;\n};\n/**\n * Set focus to the editor. Focus will be set to:\n * - the first editable field or value, or else\n * - to the expand button of the root node, or else\n * - to the context menu button of the root node, or else\n * - to the first button in the top menu\n */\n\n\ntreemode.focus = function () {\n var input = this.scrollableContent.querySelector('[contenteditable=true]');\n\n if (input) {\n input.focus();\n } else if (this.node.dom.expand) {\n this.node.dom.expand.focus();\n } else if (this.node.dom.menu) {\n this.node.dom.menu.focus();\n } else {\n // focus to the first button in the menu\n input = this.frame.querySelector('button');\n\n if (input) {\n input.focus();\n }\n }\n};\n/**\n * Remove the root node from the editor\n */\n\n\ntreemode.clear = function () {\n if (this.node) {\n this.node.hide();\n delete this.node;\n }\n\n if (this.treePath) {\n this.treePath.reset();\n }\n};\n/**\n * Set the root node for the json editor\n * @param {Node} node\n * @private\n */\n\n\ntreemode._setRoot = function (node) {\n this.clear();\n this.node = node;\n node.setParent(null);\n node.setField(this.getName(), false);\n delete node.index; // append to the dom\n\n this.tbody.appendChild(node.getDom());\n};\n/**\n * Search text in all nodes\n * The nodes will be expanded when the text is found one of its childs,\n * else it will be collapsed. Searches are case insensitive.\n * @param {String} text\n * @return {Object[]} results Array with nodes containing the search results\n * The result objects contains fields:\n * - {Node} node,\n * - {String} elem the dom element name where\n * the result is found ('field' or\n * 'value')\n */\n\n\ntreemode.search = function (text) {\n var results;\n\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n results = this.node.search(text);\n this.content.appendChild(this.table); // Put the table online again\n } else {\n results = [];\n }\n\n return results;\n};\n/**\n * Expand all nodes\n */\n\n\ntreemode.expandAll = function () {\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n this.node.expand();\n this.content.appendChild(this.table); // Put the table online again\n }\n};\n/**\n * Collapse all nodes\n */\n\n\ntreemode.collapseAll = function () {\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n this.node.collapse();\n this.content.appendChild(this.table); // Put the table online again\n }\n};\n/**\n * The method onChange is called whenever a field or value is changed, created,\n * deleted, duplicated, etc.\n * @param {String} action Change action. Available values: \"editField\",\n * \"editValue\", \"changeType\", \"appendNode\",\n * \"removeNode\", \"duplicateNode\", \"moveNode\", \"expand\",\n * \"collapse\".\n * @param {Object} params Object containing parameters describing the change.\n * The parameters in params depend on the action (for\n * example for \"editValue\" the Node, old value, and new\n * value are provided). params contains all information\n * needed to undo or redo the action.\n * @private\n */\n\n\ntreemode._onAction = function (action, params) {\n // add an action to the history\n if (this.history) {\n this.history.add(action, params);\n }\n\n this._onChange();\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\ntreemode._onChange = function () {\n if (this.onChangeDisabled) {\n return;\n } // selection can be changed after undo/redo\n\n\n this.selection = this.getDomSelection(); // validate JSON schema (if configured)\n\n this._debouncedValidate();\n\n if (this.treePath) {\n var selectedNode = this.node && this.selection ? this.node.findNodeByInternalPath(this.selection.path) : this.multiselection ? this.multiselection.nodes[0] : undefined;\n\n if (selectedNode) {\n this._updateTreePath(selectedNode.getNodePath());\n } else {\n this.treePath.reset();\n }\n } // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeJSON callback\n\n\n if (this.options.onChangeJSON) {\n try {\n this.options.onChangeJSON(this.get());\n } catch (err) {\n console.error('Error in onChangeJSON callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n } // trigger the onClassName callback\n\n\n if (this.options.onClassName) {\n this.node.recursivelyUpdateCssClassesOnNodes();\n } // trigger the onNodeName callback\n\n\n if (this.options.onNodeName && this.node.childs) {\n try {\n this.node.recursivelyUpdateNodeName();\n } catch (err) {\n console.error('Error in onNodeName callback: ', err);\n }\n }\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\ntreemode.validate = function () {\n var _this2 = this;\n\n var root = this.node;\n\n if (!root) {\n // TODO: this should be redundant but is needed on mode switch\n return;\n }\n\n var json = root.getValue(); // execute JSON schema validation\n\n var schemaErrors = [];\n\n if (this.validateSchema) {\n var valid = this.validateSchema(json);\n\n if (!valid) {\n // apply all new errors\n schemaErrors = this.validateSchema.errors.map(function (error) {\n return Object(util[\"improveSchemaError\"])(error);\n }).map(function findNode(error) {\n return {\n node: root.findNode(error.dataPath),\n error: error,\n type: 'validation'\n };\n }).filter(function hasNode(entry) {\n return entry.node != null;\n });\n }\n } // execute custom validation and after than merge and render all errors\n\n\n try {\n this.validationSequence++;\n var me = this;\n var seq = this.validationSequence;\n\n this._validateCustom(json).then(function (customValidationErrors) {\n // only apply when there was no other validation started whilst resolving async results\n if (seq === me.validationSequence) {\n var errorNodes = [].concat(schemaErrors, customValidationErrors || []);\n\n me._renderValidationErrors(errorNodes);\n\n if (typeof _this2.options.onValidationError === 'function') {\n if (Object(util[\"isValidationErrorChanged\"])(errorNodes, _this2.lastSchemaErrors)) {\n _this2.options.onValidationError.call(_this2, errorNodes);\n }\n\n _this2.lastSchemaErrors = errorNodes;\n }\n }\n })[\"catch\"](function (err) {\n console.error(err);\n });\n } catch (err) {\n console.error(err);\n }\n};\n\ntreemode._renderValidationErrors = function (errorNodes) {\n // clear all current errors\n if (this.errorNodes) {\n this.errorNodes.forEach(function (node) {\n node.setError(null);\n });\n } // render the new errors\n\n\n var parentPairs = errorNodes.reduce(function (all, entry) {\n return entry.node.findParents().filter(function (parent) {\n return !all.some(function (pair) {\n return pair[0] === parent;\n });\n }).map(function (parent) {\n return [parent, entry.node];\n }).concat(all);\n }, []);\n this.errorNodes = parentPairs.map(function (pair) {\n return {\n node: pair[0],\n child: pair[1],\n error: {\n message: pair[0].type === 'object' ? Object(i18n[\"c\" /* translate */])('containsInvalidProperties') // object\n : Object(i18n[\"c\" /* translate */])('containsInvalidItems') // array\n\n }\n };\n }).concat(errorNodes).map(function setError(entry) {\n entry.node.setError(entry.error, entry.child);\n return entry.node;\n });\n};\n/**\n * Execute custom validation if configured.\n *\n * Returns a promise resolving with the custom errors (or nothing).\n */\n\n\ntreemode._validateCustom = function (json) {\n try {\n if (this.options.onValidate) {\n var root = this.node;\n var customValidateResults = this.options.onValidate(json);\n var resultPromise = Object(util[\"isPromise\"])(customValidateResults) ? customValidateResults : Promise.resolve(customValidateResults);\n return resultPromise.then(function (customValidationPathErrors) {\n if (Array.isArray(customValidationPathErrors)) {\n return customValidationPathErrors.filter(function (error) {\n var valid = Object(util[\"isValidValidationError\"])(error);\n\n if (!valid) {\n console.warn('Ignoring a custom validation error with invalid structure. ' + 'Expected structure: {path: [...], message: \"...\"}. ' + 'Actual error:', error);\n }\n\n return valid;\n }).map(function (error) {\n var node;\n\n try {\n node = error && error.path ? root.findNodeByPath(error.path) : null;\n } catch (err) {// stay silent here, we throw a generic warning if no node is found\n }\n\n if (!node) {\n console.warn('Ignoring validation error: node not found. Path:', error.path, 'Error:', error);\n }\n\n return {\n node: node,\n error: error,\n type: 'customValidation'\n };\n }).filter(function (entry) {\n return entry && entry.node && entry.error && entry.error.message;\n });\n } else {\n return null;\n }\n });\n }\n } catch (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve(null);\n};\n/**\n * Refresh the rendered contents\n */\n\n\ntreemode.refresh = function () {\n if (this.node) {\n this.node.updateDom({\n recurse: true\n });\n }\n};\n/**\n * Start autoscrolling when given mouse position is above the top of the\n * editor contents, or below the bottom.\n * @param {Number} mouseY Absolute mouse position in pixels\n */\n\n\ntreemode.startAutoScroll = function (mouseY) {\n var me = this;\n var content = this.scrollableContent;\n var top = Object(util[\"getAbsoluteTop\"])(content);\n var height = content.clientHeight;\n var bottom = top + height;\n var margin = 24;\n var interval = 50; // ms\n\n if (mouseY < top + margin && content.scrollTop > 0) {\n this.autoScrollStep = (top + margin - mouseY) / 3;\n } else if (mouseY > bottom - margin && height + content.scrollTop < content.scrollHeight) {\n this.autoScrollStep = (bottom - margin - mouseY) / 3;\n } else {\n this.autoScrollStep = undefined;\n }\n\n if (this.autoScrollStep) {\n if (!this.autoScrollTimer) {\n this.autoScrollTimer = setInterval(function () {\n if (me.autoScrollStep) {\n content.scrollTop -= me.autoScrollStep;\n } else {\n me.stopAutoScroll();\n }\n }, interval);\n }\n } else {\n this.stopAutoScroll();\n }\n};\n/**\n * Stop auto scrolling. Only applicable when scrolling\n */\n\n\ntreemode.stopAutoScroll = function () {\n if (this.autoScrollTimer) {\n clearTimeout(this.autoScrollTimer);\n delete this.autoScrollTimer;\n }\n\n if (this.autoScrollStep) {\n delete this.autoScrollStep;\n }\n};\n/**\n * Set the focus to an element in the editor, set text selection, and\n * set scroll position.\n * @param {Object} selection An object containing fields:\n * {Element | undefined} dom The dom element\n * which has focus\n * {Range | TextRange} range A text selection\n * {Node[]} nodes Nodes in case of multi selection\n * {Number} scrollTop Scroll position\n */\n\n\ntreemode.setDomSelection = function (selection) {\n if (!selection) {\n return;\n }\n\n if ('scrollTop' in selection && this.scrollableContent) {\n // TODO: animated scroll\n this.scrollableContent.scrollTop = selection.scrollTop;\n }\n\n if (selection.paths) {\n // multi-select\n var me = this;\n var nodes = selection.paths.map(function (path) {\n return me.node.findNodeByInternalPath(path);\n });\n this.select(nodes);\n } else {\n // find the actual DOM element where to apply the focus\n var node = selection.path ? this.node.findNodeByInternalPath(selection.path) : null;\n var container = node && selection.domName ? node.dom[selection.domName] : null;\n\n if (selection.range && container) {\n var range = Object.assign({}, selection.range, {\n container: container\n });\n Object(util[\"setSelectionOffset\"])(range);\n } else if (node) {\n // just a fallback\n node.focus();\n }\n }\n};\n/**\n * Get the current focus\n * @return {Object} selection An object containing fields:\n * {Element | undefined} dom The dom element\n * which has focus\n * {Range | TextRange} range A text selection\n * {Node[]} nodes Nodes in case of multi selection\n * {Number} scrollTop Scroll position\n */\n\n\ntreemode.getDomSelection = function () {\n // find the node and field name of the current target,\n // so we can store the current selection in a serializable\n // way (internal node path and domName)\n var node = Node_Node.getNodeFromTarget(this.focusTarget);\n var focusTarget = this.focusTarget;\n var domName = node ? Object.keys(node.dom).find(function (domName) {\n return node.dom[domName] === focusTarget;\n }) : null;\n var range = Object(util[\"getSelectionOffset\"])();\n\n if (range && range.container.nodeName !== 'DIV') {\n // filter on (editable) divs)\n range = null;\n }\n\n if (range && range.container !== focusTarget) {\n range = null;\n }\n\n if (range) {\n // we cannot rely on the current instance of the container,\n // we need to store the internal node path and field and\n // find the actual DOM field when applying the selection\n delete range.container;\n }\n\n return {\n path: node ? node.getInternalPath() : null,\n domName: domName,\n range: range,\n paths: this.multiselection.length > 0 ? this.multiselection.nodes.map(function (node) {\n return node.getInternalPath();\n }) : null,\n scrollTop: this.scrollableContent ? this.scrollableContent.scrollTop : 0\n };\n};\n/**\n * Adjust the scroll position such that given top position is shown at 1/4\n * of the window height.\n * @param {Number} top\n * @param {function(boolean)} [animateCallback] Callback, executed when animation is\n * finished. The callback returns true\n * when animation is finished, or false\n * when not.\n */\n\n\ntreemode.scrollTo = function (top, animateCallback) {\n var content = this.scrollableContent;\n\n if (content) {\n var editor = this; // cancel any running animation\n\n if (editor.animateTimeout) {\n clearTimeout(editor.animateTimeout);\n delete editor.animateTimeout;\n }\n\n if (editor.animateCallback) {\n editor.animateCallback(false);\n delete editor.animateCallback;\n } // calculate final scroll position\n\n\n var height = content.clientHeight;\n var bottom = content.scrollHeight - height;\n var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom); // animate towards the new scroll position\n\n var animate = function animate() {\n var scrollTop = content.scrollTop;\n var diff = finalScrollTop - scrollTop;\n\n if (Math.abs(diff) > 3) {\n content.scrollTop += diff / 3;\n editor.animateCallback = animateCallback;\n editor.animateTimeout = setTimeout(animate, 50);\n } else {\n // finished\n if (animateCallback) {\n animateCallback(true);\n }\n\n content.scrollTop = finalScrollTop;\n delete editor.animateTimeout;\n delete editor.animateCallback;\n }\n };\n\n animate();\n } else {\n if (animateCallback) {\n animateCallback(false);\n }\n }\n};\n/**\n * Create main frame\n * @private\n */\n\n\ntreemode._createFrame = function () {\n // create the frame\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; // this.frame.setAttribute(\"tabindex\",\"0\");\n\n this.container.appendChild(this.frame);\n this.contentOuter = document.createElement('div');\n this.contentOuter.className = 'jsoneditor-outer'; // create one global event listener to handle all events from all nodes\n\n var editor = this;\n\n function onEvent(event) {\n // when switching to mode \"code\" or \"text\" via the menu, some events\n // are still fired whilst the _onEvent methods is already removed.\n if (editor._onEvent) {\n editor._onEvent(event);\n }\n } // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker[\"a\" /* FocusTracker */](focusTrackerConfig);\n\n this.frame.onclick = function (event) {\n var target = event.target; // || event.srcElement;\n\n onEvent(event); // prevent default submit action of buttons when editor is located\n // inside a form\n\n if (target.nodeName === 'BUTTON') {\n event.preventDefault();\n }\n };\n\n this.frame.oninput = onEvent;\n this.frame.onchange = onEvent;\n this.frame.onkeydown = onEvent;\n this.frame.onkeyup = onEvent;\n this.frame.oncut = onEvent;\n this.frame.onpaste = onEvent;\n this.frame.onmousedown = onEvent;\n this.frame.onmouseup = onEvent;\n this.frame.onmouseover = onEvent;\n this.frame.onmouseout = onEvent; // Note: focus and blur events do not propagate, therefore they defined\n // using an eventListener with useCapture=true\n // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n\n Object(util[\"addEventListener\"])(this.frame, 'focus', onEvent, true);\n Object(util[\"addEventListener\"])(this.frame, 'blur', onEvent, true);\n this.frame.onfocusin = onEvent; // for IE\n\n this.frame.onfocusout = onEvent; // for IE\n\n if (this.options.mainMenuBar) {\n Object(util[\"addClassName\"])(this.contentOuter, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create expand all button\n\n var expandAll = document.createElement('button');\n expandAll.type = 'button';\n expandAll.className = 'jsoneditor-expand-all';\n expandAll.title = Object(i18n[\"c\" /* translate */])('expandAll');\n\n expandAll.onclick = function () {\n editor.expandAll();\n };\n\n this.menu.appendChild(expandAll); // create collapse all button\n\n var collapseAll = document.createElement('button');\n collapseAll.type = 'button';\n collapseAll.title = Object(i18n[\"c\" /* translate */])('collapseAll');\n collapseAll.className = 'jsoneditor-collapse-all';\n\n collapseAll.onclick = function () {\n editor.collapseAll();\n };\n\n this.menu.appendChild(collapseAll); // create sort button\n\n if (this.options.enableSort) {\n var sort = document.createElement('button');\n sort.type = 'button';\n sort.className = 'jsoneditor-sort';\n sort.title = Object(i18n[\"c\" /* translate */])('sortTitleShort');\n\n sort.onclick = function () {\n editor.node.showSortModal();\n };\n\n this.menu.appendChild(sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = Object(i18n[\"c\" /* translate */])('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n editor.node.showTransformModal();\n };\n\n this.menu.appendChild(transform);\n } // create undo/redo buttons\n\n\n if (this.history) {\n // create undo button\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = Object(i18n[\"c\" /* translate */])('undo');\n\n undo.onclick = function () {\n editor._onUndo();\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = Object(i18n[\"c\" /* translate */])('redo');\n\n redo.onclick = function () {\n editor._onRedo();\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo; // register handler for onchange of history\n\n this.history.onChange = function () {\n undo.disabled = !editor.history.canUndo();\n redo.disabled = !editor.history.canRedo();\n };\n\n this.history.onChange();\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n var me = this;\n this.modeSwitcher = new ModeSwitcher[\"a\" /* ModeSwitcher */](this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n me.setMode(mode);\n me.modeSwitcher.focus();\n });\n } // create search box\n\n\n if (this.options.search) {\n this.searchBox = new SearchBox_SearchBox(this, this.menu);\n }\n }\n\n if (this.options.navigationBar) {\n // create second menu row for treepath\n this.navBar = document.createElement('div');\n this.navBar.className = 'jsoneditor-navigation-bar nav-bar-empty';\n this.frame.appendChild(this.navBar);\n this.treePath = new TreePath_TreePath(this.navBar, this.getPopupAnchor());\n this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this));\n this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this));\n }\n};\n/**\n * Perform an undo action\n * @private\n */\n\n\ntreemode._onUndo = function () {\n if (this.history) {\n // undo last action\n this.history.undo(); // fire change event\n\n this._onChange();\n }\n};\n/**\n * Perform a redo action\n * @private\n */\n\n\ntreemode._onRedo = function () {\n if (this.history) {\n // redo last action\n this.history.redo(); // fire change event\n\n this._onChange();\n }\n};\n/**\n * Event handler\n * @param event\n * @private\n */\n\n\ntreemode._onEvent = function (event) {\n // don't process events when coming from the color picker\n if (Node_Node.targetIsColorPicker(event.target)) {\n return;\n }\n\n var node = Node_Node.getNodeFromTarget(event.target);\n\n if (event.type === 'keydown') {\n this._onKeyDown(event);\n }\n\n if (node && event.type === 'focus') {\n this.focusTarget = event.target;\n\n if (this.options.autocomplete && this.options.autocomplete.trigger === 'focus') {\n this._showAutoComplete(event.target);\n }\n }\n\n if (event.type === 'mousedown') {\n this._startDragDistance(event);\n }\n\n if (event.type === 'mousemove' || event.type === 'mouseup' || event.type === 'click') {\n this._updateDragDistance(event);\n }\n\n if (node && this.options && this.options.navigationBar && node && (event.type === 'keydown' || event.type === 'mousedown')) {\n // apply on next tick, right after the new key press is applied\n var me = this;\n setTimeout(function () {\n me._updateTreePath(node.getNodePath());\n });\n }\n\n if (node && node.selected) {\n if (event.type === 'click') {\n if (event.target === node.dom.menu) {\n this.showContextMenu(event.target); // stop propagation (else we will open the context menu of a single node)\n\n return;\n } // deselect a multi selection\n\n\n if (!event.hasMoved) {\n this.deselect();\n }\n }\n\n if (event.type === 'mousedown') {\n // drag multiple nodes\n Node_Node.onDragStart(this.multiselection.nodes, event);\n }\n } else {\n // filter mouse events in the contents part of the editor (not the main menu)\n if (event.type === 'mousedown' && Object(util[\"hasParentNode\"])(event.target, this.content)) {\n this.deselect();\n\n if (node && event.target === node.dom.drag) {\n // drag a singe node\n Node_Node.onDragStart(node, event);\n } else if (!node || event.target !== node.dom.field && event.target !== node.dom.value && event.target !== node.dom.select) {\n // select multiple nodes\n this._onMultiSelectStart(event);\n }\n }\n }\n\n if (node) {\n node.onEvent(event);\n }\n};\n/**\n * Update TreePath components\n * @param {Array<Node>} pathNodes list of nodes in path from root to selection\n * @private\n */\n\n\ntreemode._updateTreePath = function (pathNodes) {\n if (pathNodes && pathNodes.length) {\n Object(util[\"removeClassName\"])(this.navBar, 'nav-bar-empty');\n var pathObjs = [];\n pathNodes.forEach(function (node) {\n var pathObj = {\n name: getName(node),\n node: node,\n children: []\n };\n\n if (node.childs && node.childs.length) {\n node.childs.forEach(function (childNode) {\n pathObj.children.push({\n name: getName(childNode),\n node: childNode\n });\n });\n }\n\n pathObjs.push(pathObj);\n });\n this.treePath.setPath(pathObjs);\n } else {\n Object(util[\"addClassName\"])(this.navBar, 'nav-bar-empty');\n }\n\n function getName(node) {\n return node.parent ? node.parent.type === 'array' ? node.index : node.field : node.field || node.type;\n }\n};\n/**\n * Callback for tree path section selection - focus the selected node in the tree\n * @param {Object} pathObj path object that was represents the selected section node\n * @private\n */\n\n\ntreemode._onTreePathSectionSelected = function (pathObj) {\n if (pathObj && pathObj.node) {\n pathObj.node.expandTo();\n pathObj.node.focus();\n }\n};\n/**\n * Callback for tree path menu item selection - rebuild the path accrding to the new selection and focus the selected node in the tree\n * @param {Object} pathObj path object that was represents the parent section node\n * @param {String} selection selected section child\n * @private\n */\n\n\ntreemode._onTreePathMenuItemSelected = function (pathObj, selection) {\n if (pathObj && pathObj.children.length) {\n var selectionObj = pathObj.children.find(function (obj) {\n return obj.name === selection;\n });\n\n if (selectionObj && selectionObj.node) {\n this._updateTreePath(selectionObj.node.getNodePath());\n\n selectionObj.node.expandTo();\n selectionObj.node.focus();\n }\n }\n};\n\ntreemode._startDragDistance = function (event) {\n this.dragDistanceEvent = {\n initialTarget: event.target,\n initialPageX: event.pageX,\n initialPageY: event.pageY,\n dragDistance: 0,\n hasMoved: false\n };\n};\n\ntreemode._updateDragDistance = function (event) {\n if (!this.dragDistanceEvent) {\n this._startDragDistance(event);\n }\n\n var diffX = event.pageX - this.dragDistanceEvent.initialPageX;\n var diffY = event.pageY - this.dragDistanceEvent.initialPageY;\n this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY);\n this.dragDistanceEvent.hasMoved = this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10;\n event.dragDistance = this.dragDistanceEvent.dragDistance;\n event.hasMoved = this.dragDistanceEvent.hasMoved;\n return event.dragDistance;\n};\n/**\n * Start multi selection of nodes by dragging the mouse\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelectStart = function (event) {\n var node = Node_Node.getNodeFromTarget(event.target);\n\n if (this.options.mode !== 'tree' || this.options.onEditable !== undefined) {\n // dragging not allowed in modes 'view' and 'form'\n // TODO: allow multiselection of items when option onEditable is specified\n return;\n }\n\n this.multiselection = {\n start: node || null,\n end: null,\n nodes: []\n };\n\n this._startDragDistance(event);\n\n var editor = this;\n\n if (!this.mousemove) {\n this.mousemove = Object(util[\"addEventListener\"])(event.view, 'mousemove', function (event) {\n editor._onMultiSelect(event);\n });\n }\n\n if (!this.mouseup) {\n this.mouseup = Object(util[\"addEventListener\"])(event.view, 'mouseup', function (event) {\n editor._onMultiSelectEnd(event);\n });\n }\n\n event.preventDefault();\n};\n/**\n * Multiselect nodes by dragging\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelect = function (event) {\n event.preventDefault();\n\n this._updateDragDistance(event);\n\n if (!event.hasMoved) {\n return;\n }\n\n var node = Node_Node.getNodeFromTarget(event.target);\n\n if (node) {\n if (this.multiselection.start == null) {\n this.multiselection.start = node;\n }\n\n this.multiselection.end = node;\n } // deselect previous selection\n\n\n this.deselect(); // find the selected nodes in the range from first to last\n\n var start = this.multiselection.start;\n var end = this.multiselection.end || this.multiselection.start;\n\n if (start && end) {\n // find the top level childs, all having the same parent\n this.multiselection.nodes = this._findTopLevelNodes(start, end);\n\n if (this.multiselection.nodes && this.multiselection.nodes.length) {\n var firstNode = this.multiselection.nodes[0];\n\n if (this.multiselection.start === firstNode || this.multiselection.start.isDescendantOf(firstNode)) {\n this.multiselection.direction = 'down';\n } else {\n this.multiselection.direction = 'up';\n }\n }\n\n this.select(this.multiselection.nodes);\n }\n};\n/**\n * End of multiselect nodes by dragging\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelectEnd = function (event) {\n // set focus to the context menu button of the first node\n if (this.multiselection.nodes[0]) {\n this.multiselection.nodes[0].dom.menu.focus();\n }\n\n this.multiselection.start = null;\n this.multiselection.end = null; // cleanup global event listeners\n\n if (this.mousemove) {\n Object(util[\"removeEventListener\"])(event.view, 'mousemove', this.mousemove);\n delete this.mousemove;\n }\n\n if (this.mouseup) {\n Object(util[\"removeEventListener\"])(event.view, 'mouseup', this.mouseup);\n delete this.mouseup;\n }\n};\n/**\n * deselect currently selected nodes\n * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end`\n * state is cleared too.\n */\n\n\ntreemode.deselect = function (clearStartAndEnd) {\n var selectionChanged = !!this.multiselection.nodes.length;\n this.multiselection.nodes.forEach(function (node) {\n node.setSelected(false);\n });\n this.multiselection.nodes = [];\n\n if (clearStartAndEnd) {\n this.multiselection.start = null;\n this.multiselection.end = null;\n }\n\n if (selectionChanged) {\n if (this._selectionChangedHandler) {\n this._selectionChangedHandler();\n }\n }\n};\n/**\n * select nodes\n * @param {Node[] | Node} nodes\n */\n\n\ntreemode.select = function (nodes) {\n if (!Array.isArray(nodes)) {\n return this.select([nodes]);\n }\n\n if (nodes) {\n this.deselect();\n this.multiselection.nodes = nodes.slice(0);\n var first = nodes[0];\n nodes.forEach(function (node) {\n node.expandPathToNode();\n node.setSelected(true, node === first);\n });\n\n if (this._selectionChangedHandler) {\n var selection = this.getSelection();\n\n this._selectionChangedHandler(selection.start, selection.end);\n }\n }\n};\n/**\n * From two arbitrary selected nodes, find their shared parent node.\n * From that parent node, select the two child nodes in the brances going to\n * nodes `start` and `end`, and select all childs in between.\n * @param {Node} start\n * @param {Node} end\n * @return {Array.<Node>} Returns an ordered list with child nodes\n * @private\n */\n\n\ntreemode._findTopLevelNodes = function (start, end) {\n var startPath = start.getNodePath();\n var endPath = end.getNodePath();\n var i = 0;\n\n while (i < startPath.length && startPath[i] === endPath[i]) {\n i++;\n }\n\n var root = startPath[i - 1];\n var startChild = startPath[i];\n var endChild = endPath[i];\n\n if (!startChild || !endChild) {\n if (root.parent) {\n // startChild is a parent of endChild or vice versa\n startChild = root;\n endChild = root;\n root = root.parent;\n } else {\n // we have selected the root node (which doesn't have a parent)\n startChild = root.childs[0];\n endChild = root.childs[root.childs.length - 1];\n }\n }\n\n if (root && startChild && endChild) {\n var startIndex = root.childs.indexOf(startChild);\n var endIndex = root.childs.indexOf(endChild);\n var firstIndex = Math.min(startIndex, endIndex);\n var lastIndex = Math.max(startIndex, endIndex);\n return root.childs.slice(firstIndex, lastIndex + 1);\n } else {\n return [];\n }\n};\n/**\n * Show autocomplete menu\n * @param {HTMLElement} element\n * @private\n */\n\n\ntreemode._showAutoComplete = function (element) {\n var node = Node_Node.getNodeFromTarget(element);\n var jsonElementType = '';\n if (element.className.indexOf('jsoneditor-value') >= 0) jsonElementType = 'value';\n if (element.className.indexOf('jsoneditor-field') >= 0) jsonElementType = 'field';\n\n if (jsonElementType === '') {\n // Unknown element field. Could be a button or something else\n return;\n }\n\n var self = this;\n setTimeout(function () {\n if (node && (self.options.autocomplete.trigger === 'focus' || element.innerText.length > 0)) {\n var result = self.options.autocomplete.getOptions(element.innerText, node.getPath(), jsonElementType, node.editor);\n\n if (result === null) {\n self.autocomplete.hideDropDown();\n } else if (typeof result.then === 'function') {\n // probably a promise\n result.then(function (obj) {\n if (obj === null) {\n self.autocomplete.hideDropDown();\n } else if (obj.options) {\n self.autocomplete.show(element, obj.startFrom, obj.options);\n } else {\n self.autocomplete.show(element, 0, obj);\n }\n })[\"catch\"](function (err) {\n console.error(err);\n });\n } else {\n // definitely not a promise\n if (result.options) {\n self.autocomplete.show(element, result.startFrom, result.options);\n } else {\n self.autocomplete.show(element, 0, result);\n }\n }\n } else {\n self.autocomplete.hideDropDown();\n }\n }, 50);\n};\n/**\n * Event handler for keydown. Handles shortcut keys\n * @param {Event} event\n * @private\n */\n\n\ntreemode._onKeyDown = function (event) {\n var keynum = event.which || event.keyCode;\n var altKey = event.altKey;\n var ctrlKey = event.ctrlKey;\n var metaKey = event.metaKey;\n var shiftKey = event.shiftKey;\n var handled = false;\n var currentTarget = this.focusTarget;\n\n if (keynum === 9) {\n // Tab or Shift+Tab\n var me = this;\n setTimeout(function () {\n /*\n - Checking for change in focusTarget\n - Without the check,\n pressing tab after reaching the final DOM element in the editor will\n set the focus back to it than passing focus outside the editor\n */\n if (me.focusTarget !== currentTarget) {\n // select all text when moving focus to an editable div\n Object(util[\"selectContentEditable\"])(me.focusTarget);\n }\n }, 0);\n }\n\n if (this.searchBox) {\n if (ctrlKey && keynum === 70) {\n // Ctrl+F\n this.searchBox.dom.search.focus();\n this.searchBox.dom.search.select();\n handled = true;\n } else if (keynum === 114 || ctrlKey && keynum === 71) {\n // F3 or Ctrl+G\n var focus = true;\n\n if (!shiftKey) {\n // select next search result (F3 or Ctrl+G)\n this.searchBox.next(focus);\n } else {\n // select previous search result (Shift+F3 or Ctrl+Shift+G)\n this.searchBox.previous(focus);\n }\n\n handled = true;\n }\n }\n\n if (this.history) {\n if (ctrlKey && !shiftKey && keynum === 90) {\n // Ctrl+Z\n // undo\n this._onUndo();\n\n handled = true;\n } else if (ctrlKey && shiftKey && keynum === 90) {\n // Ctrl+Shift+Z\n // redo\n this._onRedo();\n\n handled = true;\n }\n }\n\n if (this.options.autocomplete && !handled) {\n if (!ctrlKey && !altKey && !metaKey && (event.key.length === 1 || keynum === 8 || keynum === 46)) {\n handled = false; // Activate autocomplete\n\n this._showAutoComplete(event.target);\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n};\n/**\n * Create main table\n * @private\n */\n\n\ntreemode._createTable = function () {\n if (this.options.navigationBar) {\n Object(util[\"addClassName\"])(this.contentOuter, 'has-nav-bar');\n }\n\n this.scrollableContent = document.createElement('div');\n this.scrollableContent.className = 'jsoneditor-tree';\n this.contentOuter.appendChild(this.scrollableContent); // the jsoneditor-tree-inner div with bottom padding is here to\n // keep space for the action menu dropdown. It's created as a\n // separate div instead of using scrollableContent to work around\n // and issue in the Chrome browser showing scrollable contents outside of the div\n // see https://github.com/josdejong/jsoneditor/issues/557\n\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-tree-inner';\n this.scrollableContent.appendChild(this.content);\n this.table = document.createElement('table');\n this.table.className = 'jsoneditor-tree';\n this.content.appendChild(this.table); // create colgroup where the first two columns don't have a fixed\n // width, and the edit columns do have a fixed width\n\n var col;\n this.colgroupContent = document.createElement('colgroup');\n\n if (this.options.mode === 'tree') {\n col = document.createElement('col');\n col.width = '24px';\n this.colgroupContent.appendChild(col);\n }\n\n col = document.createElement('col');\n col.width = '24px';\n this.colgroupContent.appendChild(col);\n col = document.createElement('col');\n this.colgroupContent.appendChild(col);\n this.table.appendChild(this.colgroupContent);\n this.tbody = document.createElement('tbody');\n this.table.appendChild(this.tbody);\n this.frame.appendChild(this.contentOuter);\n};\n/**\n * Show a contextmenu for this node.\n * Used for multiselection\n * @param {HTMLElement} anchor Anchor element to attach the context menu to.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n\ntreemode.showContextMenu = function (anchor, onClose) {\n var items = [];\n var selectedNodes = this.multiselection.nodes.slice(); // create duplicate button\n\n items.push({\n text: Object(i18n[\"c\" /* translate */])('duplicateText'),\n title: Object(i18n[\"c\" /* translate */])('duplicateTitle'),\n className: 'jsoneditor-duplicate',\n click: function click() {\n Node_Node.onDuplicate(selectedNodes);\n }\n }); // create remove button\n\n items.push({\n text: Object(i18n[\"c\" /* translate */])('remove'),\n title: Object(i18n[\"c\" /* translate */])('removeTitle'),\n className: 'jsoneditor-remove',\n click: function click() {\n Node_Node.onRemove(selectedNodes);\n }\n });\n\n if (this.options.onCreateMenu) {\n var paths = selectedNodes.map(function (node) {\n return node.getPath();\n });\n items = this.options.onCreateMenu(items, {\n type: 'multiple',\n path: paths[0],\n paths: paths\n });\n }\n\n var menu = new ContextMenu[\"a\" /* ContextMenu */](items, {\n close: onClose\n });\n menu.show(anchor, this.getPopupAnchor());\n};\n\ntreemode.getPopupAnchor = function () {\n return this.options.popupAnchor || this.frame;\n};\n/**\n * Get current selected nodes\n * @return {{start:SerializableNode, end: SerializableNode}}\n */\n\n\ntreemode.getSelection = function () {\n var selection = {\n start: null,\n end: null\n };\n\n if (this.multiselection.nodes && this.multiselection.nodes.length) {\n if (this.multiselection.nodes.length) {\n var selection1 = this.multiselection.nodes[0];\n var selection2 = this.multiselection.nodes[this.multiselection.nodes.length - 1];\n\n if (this.multiselection.direction === 'down') {\n selection.start = selection1.serialize();\n selection.end = selection2.serialize();\n } else {\n selection.start = selection2.serialize();\n selection.end = selection1.serialize();\n }\n }\n }\n\n return selection;\n};\n/**\n * Callback registration for selection change\n * @param {selectionCallback} callback\n *\n * @callback selectionCallback\n */\n\n\ntreemode.onSelectionChange = function (callback) {\n if (typeof callback === 'function') {\n this._selectionChangedHandler = Object(util[\"debounce\"])(callback, this.DEBOUNCE_INTERVAL);\n }\n};\n/**\n * Select range of nodes.\n * For selecting single node send only the start parameter\n * For clear the selection do not send any parameter\n * If the nodes are not from the same level the first common parent will be selected\n * @param {{path: Array.<String>}} start object contains the path for selection start\n * @param {{path: Array.<String>}} end object contains the path for selection end\n */\n\n\ntreemode.setSelection = function (start, end) {\n // check for old usage\n if (start && start.dom && start.range) {\n console.warn('setSelection/getSelection usage for text selection is deprecated and should not be used, see documentation for supported selection options');\n this.setDomSelection(start);\n }\n\n var nodes = this._getNodeInstancesByRange(start, end);\n\n nodes.forEach(function (node) {\n node.expandTo();\n });\n this.select(nodes);\n};\n/**\n * Returns a set of Nodes according to a range of selection\n * @param {{path: Array.<String>}} start object contains the path for range start\n * @param {{path: Array.<String>}=} end object contains the path for range end\n * @return {Array.<Node>} Node instances on the given range\n * @private\n */\n\n\ntreemode._getNodeInstancesByRange = function (start, end) {\n var startNode, endNode;\n\n if (start && start.path) {\n startNode = this.node.findNodeByPath(start.path);\n\n if (end && end.path) {\n endNode = this.node.findNodeByPath(end.path);\n }\n }\n\n var nodes = [];\n\n if (startNode instanceof Node_Node) {\n if (endNode instanceof Node_Node && endNode !== startNode) {\n if (startNode.parent === endNode.parent) {\n if (startNode.getIndex() < endNode.getIndex()) {\n start = startNode;\n end = endNode;\n } else {\n start = endNode;\n end = startNode;\n }\n\n var current = start;\n nodes.push(current);\n\n do {\n current = current.nextSibling();\n nodes.push(current);\n } while (current && current !== end);\n } else {\n nodes = this._findTopLevelNodes(startNode, endNode);\n }\n } else {\n nodes.push(startNode);\n }\n }\n\n return nodes;\n};\n\ntreemode.getNodesByRange = function (start, end) {\n var nodes = this._getNodeInstancesByRange(start, end);\n\n var serializableNodes = [];\n nodes.forEach(function (node) {\n serializableNodes.push(node.serialize());\n });\n return serializableNodes;\n}; // define modes\n\n\nvar treeModeMixins = [{\n mode: 'tree',\n mixin: treemode,\n data: 'json'\n}, {\n mode: 'view',\n mixin: treemode,\n data: 'json'\n}, {\n mode: 'form',\n mixin: treemode,\n data: 'json'\n}];\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"previewModeMixins\", function() { return /* binding */ previewModeMixins; });\n\n// EXTERNAL MODULE: ./node_modules/simple-json-repair/lib/umd/simpleJsonRepair.min.js\nvar simpleJsonRepair_min = __webpack_require__(7);\nvar simpleJsonRepair_min_default = /*#__PURE__*/__webpack_require__.n(simpleJsonRepair_min);\n\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(2);\n\n// EXTERNAL MODULE: ./src/js/ErrorTable.js\nvar ErrorTable = __webpack_require__(15);\n\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(8);\n\n// CONCATENATED MODULE: ./src/js/History.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * Keep track on any history, be able\n * @param {function} onChange\n * @param {function} calculateItemSize\n * @param {number} limit Maximum size of all items in history\n * @constructor\n */\nvar History = /*#__PURE__*/function () {\n function History(onChange, calculateItemSize, limit) {\n _classCallCheck(this, History);\n\n this.onChange = onChange;\n\n this.calculateItemSize = calculateItemSize || function () {\n return 1;\n };\n\n this.limit = limit;\n this.items = [];\n this.index = -1;\n }\n\n _createClass(History, [{\n key: \"add\",\n value: function add(item) {\n // limit number of items in history so that the total size doesn't\n // always keep at least one item in memory\n while (this._calculateHistorySize() > this.limit && this.items.length > 1) {\n this.items.shift();\n this.index--;\n } // cleanup any redo action that are not valid anymore\n\n\n this.items = this.items.slice(0, this.index + 1);\n this.items.push(item);\n this.index++;\n this.onChange();\n }\n }, {\n key: \"_calculateHistorySize\",\n value: function _calculateHistorySize() {\n var calculateItemSize = this.calculateItemSize;\n var totalSize = 0;\n this.items.forEach(function (item) {\n totalSize += calculateItemSize(item);\n });\n return totalSize;\n }\n }, {\n key: \"undo\",\n value: function undo() {\n if (!this.canUndo()) {\n return;\n }\n\n this.index--;\n this.onChange();\n return this.items[this.index];\n }\n }, {\n key: \"redo\",\n value: function redo() {\n if (!this.canRedo()) {\n return;\n }\n\n this.index++;\n this.onChange();\n return this.items[this.index];\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.index > 0;\n }\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.index < this.items.length - 1;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.items = [];\n this.index = -1;\n this.onChange();\n }\n }]);\n\n return History;\n}();\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(9);\n\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar showSortModal = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar showTransformModal = __webpack_require__(6);\n\n// EXTERNAL MODULE: ./src/js/textmode.js + 1 modules\nvar textmode = __webpack_require__(17);\n\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/js/previewmode.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar previewmode_textmode = textmode[\"textModeMixins\"][0].mixin; // create a mixin with the functions for text mode\n\nvar previewmode = {};\n/**\n * Create a JSON document preview, suitable for processing of large documents\n * @param {Element} container\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\npreviewmode.create = function (container) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof options.statusBar === 'undefined') {\n options.statusBar = true;\n } // setting default for previewmode\n\n\n options.mainMenuBar = options.mainMenuBar !== false;\n options.enableSort = options.enableSort !== false;\n options.enableTransform = options.enableTransform !== false;\n options.createQuery = options.createQuery || jmespathQuery[\"a\" /* createQuery */];\n options.executeQuery = options.executeQuery || jmespathQuery[\"b\" /* executeQuery */];\n this.options = options; // indentation\n\n if (typeof options.indentation === 'number') {\n this.indentation = Number(options.indentation);\n } else {\n this.indentation = 2; // number of spaces\n } // language\n\n\n Object(i18n[\"b\" /* setLanguages */])(this.options.languages);\n Object(i18n[\"a\" /* setLanguage */])(this.options.language); // determine mode\n\n this.mode = 'preview';\n var me = this;\n this.container = container;\n this.dom = {};\n this.json = undefined;\n this.text = ''; // TODO: JSON Schema support\n // create a debounced validate function\n\n this._debouncedValidate = Object(util[\"debounce\"])(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\n this.width = container.clientWidth;\n this.height = container.clientHeight;\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-preview';\n\n this.frame.onclick = function (event) {\n // prevent default submit action when the editor is located inside a form\n event.preventDefault();\n }; // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker[\"a\" /* FocusTracker */](focusTrackerConfig);\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-outer';\n this.dom.busy = document.createElement('div');\n this.dom.busy.className = 'jsoneditor-busy';\n this.dom.busyContent = document.createElement('span');\n this.dom.busyContent.textContent = 'busy...';\n this.dom.busy.appendChild(this.dom.busyContent);\n this.content.appendChild(this.dom.busy);\n this.dom.previewContent = document.createElement('pre');\n this.dom.previewContent.className = 'jsoneditor-preview';\n this.dom.previewText = document.createTextNode('');\n this.dom.previewContent.appendChild(this.dom.previewText);\n this.content.appendChild(this.dom.previewContent);\n\n if (this.options.mainMenuBar) {\n Object(util[\"addClassName\"])(this.content, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create format button\n\n var buttonFormat = document.createElement('button');\n buttonFormat.type = 'button';\n buttonFormat.className = 'jsoneditor-format';\n buttonFormat.title = Object(i18n[\"c\" /* translate */])('formatTitle');\n this.menu.appendChild(buttonFormat);\n\n buttonFormat.onclick = function handleFormat() {\n me.executeWithBusyMessage(function () {\n try {\n me.format();\n } catch (err) {\n me._onError(err);\n }\n }, 'formatting...');\n }; // create compact button\n\n\n var buttonCompact = document.createElement('button');\n buttonCompact.type = 'button';\n buttonCompact.className = 'jsoneditor-compact';\n buttonCompact.title = Object(i18n[\"c\" /* translate */])('compactTitle');\n this.menu.appendChild(buttonCompact);\n\n buttonCompact.onclick = function handleCompact() {\n me.executeWithBusyMessage(function () {\n try {\n me.compact();\n } catch (err) {\n me._onError(err);\n }\n }, 'compacting...');\n }; // create sort button\n\n\n if (this.options.enableSort) {\n var _sort = document.createElement('button');\n\n _sort.type = 'button';\n _sort.className = 'jsoneditor-sort';\n _sort.title = Object(i18n[\"c\" /* translate */])('sortTitleShort');\n\n _sort.onclick = function () {\n me._showSortModal();\n };\n\n this.menu.appendChild(_sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = Object(i18n[\"c\" /* translate */])('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n me._showTransformModal();\n };\n\n this.dom.transform = transform;\n this.menu.appendChild(transform);\n } // create repair button\n\n\n var buttonRepair = document.createElement('button');\n buttonRepair.type = 'button';\n buttonRepair.className = 'jsoneditor-repair';\n buttonRepair.title = Object(i18n[\"c\" /* translate */])('repairTitle');\n this.menu.appendChild(buttonRepair);\n\n buttonRepair.onclick = function () {\n if (me.json === undefined) {\n // only repair if we don't have valid JSON\n me.executeWithBusyMessage(function () {\n try {\n me.repair();\n } catch (err) {\n me._onError(err);\n }\n }, 'repairing...');\n }\n }; // create history and undo/redo buttons\n\n\n if (this.options.history !== false) {\n // default option value is true\n var onHistoryChange = function onHistoryChange() {\n me.dom.undo.disabled = !me.history.canUndo();\n me.dom.redo.disabled = !me.history.canRedo();\n };\n\n var calculateItemSize = function calculateItemSize(item) {\n return (// times two to account for the json object\n item.text.length * 2\n );\n };\n\n this.history = new History(onHistoryChange, calculateItemSize, constants[\"c\" /* PREVIEW_HISTORY_LIMIT */]); // create undo button\n\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = Object(i18n[\"c\" /* translate */])('undo');\n\n undo.onclick = function () {\n var action = me.history.undo();\n\n if (action) {\n me._applyHistory(action);\n }\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = Object(i18n[\"c\" /* translate */])('redo');\n\n redo.onclick = function () {\n var action = me.history.redo();\n\n if (action) {\n me._applyHistory(action);\n }\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo; // force enabling/disabling the undo/redo button\n\n this.history.onChange();\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n this.modeSwitcher = new ModeSwitcher[\"a\" /* ModeSwitcher */](this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n me.setMode(mode);\n me.modeSwitcher.focus();\n });\n }\n }\n\n this.errorTable = new ErrorTable[\"a\" /* ErrorTable */]({\n errorTableVisible: true,\n onToggleVisibility: function onToggleVisibility() {\n me.validate();\n },\n onFocusLine: null,\n onChangeHeight: function onChangeHeight(height) {\n // TODO: change CSS to using flex box, remove setting height using JavaScript\n var statusBarHeight = me.dom.statusBar ? me.dom.statusBar.clientHeight : 0;\n var totalHeight = height + statusBarHeight + 1;\n me.content.style.marginBottom = -totalHeight + 'px';\n me.content.style.paddingBottom = totalHeight + 'px';\n }\n });\n this.frame.appendChild(this.content);\n this.frame.appendChild(this.errorTable.getErrorTable());\n this.container.appendChild(this.frame);\n\n if (options.statusBar) {\n Object(util[\"addClassName\"])(this.content, 'has-status-bar');\n var statusBar = document.createElement('div');\n this.dom.statusBar = statusBar;\n statusBar.className = 'jsoneditor-statusbar';\n this.frame.appendChild(statusBar);\n this.dom.fileSizeInfo = document.createElement('span');\n this.dom.fileSizeInfo.className = 'jsoneditor-size-info';\n this.dom.fileSizeInfo.innerText = '';\n statusBar.appendChild(this.dom.fileSizeInfo);\n this.dom.arrayInfo = document.createElement('span');\n this.dom.arrayInfo.className = 'jsoneditor-size-info';\n this.dom.arrayInfo.innerText = '';\n statusBar.appendChild(this.dom.arrayInfo);\n statusBar.appendChild(this.errorTable.getErrorCounter());\n statusBar.appendChild(this.errorTable.getWarningIcon());\n statusBar.appendChild(this.errorTable.getErrorIcon());\n }\n\n this._renderPreview();\n\n this.setSchema(this.options.schema, this.options.schemaRefs);\n};\n\npreviewmode._renderPreview = function () {\n var text = this.getText();\n this.dom.previewText.nodeValue = Object(util[\"limitCharacters\"])(text, constants[\"b\" /* MAX_PREVIEW_CHARACTERS */]);\n\n if (this.dom.fileSizeInfo) {\n this.dom.fileSizeInfo.innerText = 'Size: ' + Object(util[\"formatSize\"])(text.length);\n }\n\n if (this.dom.arrayInfo) {\n if (Array.isArray(this.json)) {\n this.dom.arrayInfo.innerText = 'Array: ' + this.json.length + ' items';\n } else {\n this.dom.arrayInfo.innerText = '';\n }\n }\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\npreviewmode._onChange = function () {\n // validate JSON schema (if configured)\n this._debouncedValidate(); // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeJSON callback\n\n\n if (this.options.onChangeJSON) {\n try {\n this.options.onChangeJSON(this.get());\n } catch (err) {\n console.error('Error in onChangeJSON callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n }\n};\n/**\n * Open a sort modal\n * @private\n */\n\n\npreviewmode._showSortModal = function () {\n var me = this;\n\n function onSort(json, sortedBy) {\n if (Array.isArray(json)) {\n var sortedArray = Object(util[\"sort\"])(json, sortedBy.path, sortedBy.direction);\n me.sortedBy = sortedBy;\n\n me._setAndFireOnChange(sortedArray);\n }\n\n if (Object(util[\"isObject\"])(json)) {\n var sortedObject = Object(util[\"sortObjectKeys\"])(json, sortedBy.direction);\n me.sortedBy = sortedBy;\n\n me._setAndFireOnChange(sortedObject);\n }\n }\n\n this.executeWithBusyMessage(function () {\n var container = me.options.modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */];\n var json = me.get();\n\n me._renderPreview(); // update array count\n\n\n Object(showSortModal[\"showSortModal\"])(container, json, function (sortedBy) {\n me.executeWithBusyMessage(function () {\n onSort(json, sortedBy);\n }, 'sorting...');\n }, me.sortedBy);\n }, 'parsing...');\n};\n/**\n * Open a transform modal\n * @private\n */\n\n\npreviewmode._showTransformModal = function () {\n var _this = this;\n\n this.executeWithBusyMessage(function () {\n var _this$options = _this.options,\n createQuery = _this$options.createQuery,\n executeQuery = _this$options.executeQuery,\n modalAnchor = _this$options.modalAnchor,\n queryDescription = _this$options.queryDescription;\n\n var json = _this.get();\n\n _this._renderPreview(); // update array count\n\n\n Object(showTransformModal[\"showTransformModal\"])({\n container: modalAnchor || constants[\"a\" /* DEFAULT_MODAL_ANCHOR */],\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: createQuery,\n executeQuery: executeQuery,\n onTransform: function onTransform(query) {\n _this.executeWithBusyMessage(function () {\n var updatedJson = executeQuery(json, query);\n\n _this._setAndFireOnChange(updatedJson);\n }, 'transforming...');\n }\n });\n }, 'parsing...');\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\npreviewmode.destroy = function () {\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n }\n\n this._debouncedValidate = null;\n\n if (this.history) {\n this.history.clear();\n this.history = null;\n } // Removing the FocusTracker set to track the editor's focus event\n\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Compact the code in the text editor\n */\n\n\npreviewmode.compact = function () {\n var json = this.get();\n var text = JSON.stringify(json); // we know that in this case the json is still the same, so we pass json too\n\n this._setTextAndFireOnChange(text, json);\n};\n/**\n * Format the code in the text editor\n */\n\n\npreviewmode.format = function () {\n var json = this.get();\n var text = JSON.stringify(json, null, this.indentation); // we know that in this case the json is still the same, so we pass json too\n\n this._setTextAndFireOnChange(text, json);\n};\n/**\n * Repair the code in the text editor\n */\n\n\npreviewmode.repair = function () {\n var text = this.getText();\n\n try {\n var repairedText = simpleJsonRepair_min_default()(text);\n\n this._setTextAndFireOnChange(repairedText);\n } catch (err) {// repair was not successful, do nothing\n }\n};\n/**\n * Set focus to the editor\n */\n\n\npreviewmode.focus = function () {\n // we don't really have a place to focus,\n // let's focus on the transform button\n this.dom.transform.focus();\n};\n/**\n * Set json data in the editor\n * @param {*} json\n */\n\n\npreviewmode.set = function (json) {\n if (this.history) {\n this.history.clear();\n }\n\n this._set(json);\n};\n/**\n * Update data. Same as calling `set` in text/code mode.\n * @param {*} json\n */\n\n\npreviewmode.update = function (json) {\n this._set(json);\n};\n/**\n * Set json data\n * @param {*} json\n */\n\n\npreviewmode._set = function (json) {\n this.text = undefined;\n this.json = json;\n\n this._renderPreview();\n\n this._pushHistory(); // validate JSON schema\n\n\n this._debouncedValidate();\n};\n\npreviewmode._setAndFireOnChange = function (json) {\n this._set(json);\n\n this._onChange();\n};\n/**\n * Get json data\n * @return {*} json\n */\n\n\npreviewmode.get = function () {\n if (this.json === undefined) {\n var text = this.getText();\n this.json = Object(util[\"parse\"])(text); // this can throw an error\n }\n\n return this.json;\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\npreviewmode.getText = function () {\n if (this.text === undefined) {\n this.text = JSON.stringify(this.json, null, this.indentation);\n\n if (this.options.escapeUnicode === true) {\n this.text = Object(util[\"escapeUnicodeChars\"])(this.text);\n }\n }\n\n return this.text;\n};\n/**\n * Set the text contents of the editor\n * @param {String} jsonText\n */\n\n\npreviewmode.setText = function (jsonText) {\n if (this.history) {\n this.history.clear();\n }\n\n this._setText(jsonText);\n};\n/**\n * Update the text contents\n * @param {string} jsonText\n */\n\n\npreviewmode.updateText = function (jsonText) {\n // don't update if there are no changes\n if (this.getText() === jsonText) {\n return;\n }\n\n this._setText(jsonText);\n};\n/**\n * Set the text contents of the editor\n * @param {string} jsonText\n * @param {*} [json] Optional JSON instance of the text\n * @private\n */\n\n\npreviewmode._setText = function (jsonText, json) {\n if (this.options.escapeUnicode === true) {\n this.text = Object(util[\"escapeUnicodeChars\"])(jsonText);\n } else {\n this.text = jsonText;\n }\n\n this.json = json;\n\n this._renderPreview();\n\n if (this.json === undefined) {\n var me = this;\n this.executeWithBusyMessage(function () {\n try {\n // force parsing the json now, else it will be done in validate without feedback\n me.json = me.get();\n\n me._renderPreview();\n\n me._pushHistory();\n } catch (err) {// no need to throw an error, validation will show an error\n }\n }, 'parsing...');\n } else {\n this._pushHistory();\n }\n\n this._debouncedValidate();\n};\n/**\n * Set text and fire onChange callback\n * @param {string} jsonText\n * @param {*} [json] Optional JSON instance of the text\n * @private\n */\n\n\npreviewmode._setTextAndFireOnChange = function (jsonText, json) {\n this._setText(jsonText, json);\n\n this._onChange();\n};\n/**\n * Apply history to the current state\n * @param {{json?: JSON, text?: string}} action\n * @private\n */\n\n\npreviewmode._applyHistory = function (action) {\n this.json = action.json;\n this.text = action.text;\n\n this._renderPreview();\n\n this._debouncedValidate();\n};\n/**\n * Push the current state to history\n * @private\n */\n\n\npreviewmode._pushHistory = function () {\n if (!this.history) {\n return;\n }\n\n var action = {\n text: this.text,\n json: this.json\n };\n this.history.add(action);\n};\n/**\n * Execute a heavy, blocking action.\n * Before starting the action, show a message on screen like \"parsing...\"\n * @param {function} fn\n * @param {string} message\n */\n\n\npreviewmode.executeWithBusyMessage = function (fn, message) {\n var size = this.getText().length;\n\n if (size > constants[\"d\" /* SIZE_LARGE */]) {\n var me = this;\n Object(util[\"addClassName\"])(me.frame, 'busy');\n me.dom.busyContent.innerText = message;\n setTimeout(function () {\n fn();\n Object(util[\"removeClassName\"])(me.frame, 'busy');\n me.dom.busyContent.innerText = '';\n }, 100);\n } else {\n fn();\n }\n}; // TODO: refactor into composable functions instead of this shaky mixin-like structure\n\n\npreviewmode.validate = previewmode_textmode.validate;\npreviewmode._renderErrors = previewmode_textmode._renderErrors; // define modes\n\nvar previewModeMixins = [{\n mode: 'preview',\n mixin: previewmode,\n data: 'json'\n}];\n\n/***/ })\n/******/ ]);\n});","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Mock\"] = factory();\n\telse\n\t\troot[\"Mock\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* global require, module, window */\n\tvar Handler = __webpack_require__(1)\n\tvar Util = __webpack_require__(3)\n\tvar Random = __webpack_require__(5)\n\tvar RE = __webpack_require__(20)\n\tvar toJSONSchema = __webpack_require__(23)\n\tvar valid = __webpack_require__(25)\n\n\tvar XHR\n\tif (typeof window !== 'undefined') XHR = __webpack_require__(27)\n\n\t/*!\n\t Mock - 模拟请求 & 模拟数据\n\t https://github.com/nuysoft/Mock\n\t 墨智 mozhi.gyy@taobao.com nuysoft@gmail.com\n\t*/\n\tvar Mock = {\n\t Handler: Handler,\n\t Random: Random,\n\t Util: Util,\n\t XHR: XHR,\n\t RE: RE,\n\t toJSONSchema: toJSONSchema,\n\t valid: valid,\n\t heredoc: Util.heredoc,\n\t setup: function(settings) {\n\t return XHR.setup(settings)\n\t },\n\t _mocked: {}\n\t}\n\n\tMock.version = '1.0.1-beta3'\n\n\t// 避免循环依赖\n\tif (XHR) XHR.Mock = Mock\n\n\t/*\n\t * Mock.mock( template )\n\t * Mock.mock( function() )\n\t * Mock.mock( rurl, template )\n\t * Mock.mock( rurl, function(options) )\n\t * Mock.mock( rurl, rtype, template )\n\t * Mock.mock( rurl, rtype, function(options) )\n\n\t 根据数据模板生成模拟数据。\n\t*/\n\tMock.mock = function(rurl, rtype, template) {\n\t // Mock.mock(template)\n\t if (arguments.length === 1) {\n\t return Handler.gen(rurl)\n\t }\n\t // Mock.mock(rurl, template)\n\t if (arguments.length === 2) {\n\t template = rtype\n\t rtype = undefined\n\t }\n\t // 拦截 XHR\n\t if (XHR) window.XMLHttpRequest = XHR\n\t Mock._mocked[rurl + (rtype || '')] = {\n\t rurl: rurl,\n\t rtype: rtype,\n\t template: template\n\t }\n\t return Mock\n\t}\n\n\tmodule.exports = Mock\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* \n\t ## Handler\n\n\t 处理数据模板。\n\t \n\t * Handler.gen( template, name?, context? )\n\n\t 入口方法。\n\n\t * Data Template Definition, DTD\n\t \n\t 处理数据模板定义。\n\n\t * Handler.array( options )\n\t * Handler.object( options )\n\t * Handler.number( options )\n\t * Handler.boolean( options )\n\t * Handler.string( options )\n\t * Handler.function( options )\n\t * Handler.regexp( options )\n\t \n\t 处理路径(相对和绝对)。\n\n\t * Handler.getValueByKeyPath( key, options )\n\n\t * Data Placeholder Definition, DPD\n\n\t 处理数据占位符定义\n\n\t * Handler.placeholder( placeholder, context, templateContext, options )\n\n\t*/\n\n\tvar Constant = __webpack_require__(2)\n\tvar Util = __webpack_require__(3)\n\tvar Parser = __webpack_require__(4)\n\tvar Random = __webpack_require__(5)\n\tvar RE = __webpack_require__(20)\n\n\tvar Handler = {\n\t extend: Util.extend\n\t}\n\n\t/*\n\t template 属性值(即数据模板)\n\t name 属性名\n\t context 数据上下文,生成后的数据\n\t templateContext 模板上下文,\n\n\t Handle.gen(template, name, options)\n\t context\n\t currentContext, templateCurrentContext, \n\t path, templatePath\n\t root, templateRoot\n\t*/\n\tHandler.gen = function(template, name, context) {\n\t /* jshint -W041 */\n\t name = name == undefined ? '' : (name + '')\n\n\t context = context || {}\n\t context = {\n\t // 当前访问路径,只有属性名,不包括生成规则\n\t path: context.path || [Constant.GUID],\n\t templatePath: context.templatePath || [Constant.GUID++],\n\t // 最终属性值的上下文\n\t currentContext: context.currentContext,\n\t // 属性值模板的上下文\n\t templateCurrentContext: context.templateCurrentContext || template,\n\t // 最终值的根\n\t root: context.root || context.currentContext,\n\t // 模板的根\n\t templateRoot: context.templateRoot || context.templateCurrentContext || template\n\t }\n\t // console.log('path:', context.path.join('.'), template)\n\n\t var rule = Parser.parse(name)\n\t var type = Util.type(template)\n\t var data\n\n\t if (Handler[type]) {\n\t data = Handler[type]({\n\t // 属性值类型\n\t type: type,\n\t // 属性值模板\n\t template: template,\n\t // 属性名 + 生成规则\n\t name: name,\n\t // 属性名\n\t parsedName: name ? name.replace(Constant.RE_KEY, '$1') : name,\n\n\t // 解析后的生成规则\n\t rule: rule,\n\t // 相关上下文\n\t context: context\n\t })\n\n\t if (!context.root) context.root = data\n\t return data\n\t }\n\n\t return template\n\t}\n\n\tHandler.extend({\n\t array: function(options) {\n\t var result = [],\n\t i, ii;\n\n\t // 'name|1': []\n\t // 'name|count': []\n\t // 'name|min-max': []\n\t if (options.template.length === 0) return result\n\n\t // 'arr': [{ 'email': '@EMAIL' }, { 'email': '@EMAIL' }]\n\t if (!options.rule.parameters) {\n\t for (i = 0; i < options.template.length; i++) {\n\t options.context.path.push(i)\n\t options.context.templatePath.push(i)\n\t result.push(\n\t Handler.gen(options.template[i], i, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })\n\t )\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\t }\n\t } else {\n\t // 'method|1': ['GET', 'POST', 'HEAD', 'DELETE']\n\t if (options.rule.min === 1 && options.rule.max === undefined) {\n\t // fix #17\n\t options.context.path.push(options.name)\n\t options.context.templatePath.push(options.name)\n\t result = Random.pick(\n\t Handler.gen(options.template, undefined, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })\n\t )\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\t } else {\n\t // 'data|+1': [{}, {}]\n\t if (options.rule.parameters[2]) {\n\t options.template.__order_index = options.template.__order_index || 0\n\n\t options.context.path.push(options.name)\n\t options.context.templatePath.push(options.name)\n\t result = Handler.gen(options.template, undefined, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })[\n\t options.template.__order_index % options.template.length\n\t ]\n\n\t options.template.__order_index += +options.rule.parameters[2]\n\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\n\t } else {\n\t // 'data|1-10': [{}]\n\t for (i = 0; i < options.rule.count; i++) {\n\t // 'data|1-10': [{}, {}]\n\t for (ii = 0; ii < options.template.length; ii++) {\n\t options.context.path.push(result.length)\n\t options.context.templatePath.push(ii)\n\t result.push(\n\t Handler.gen(options.template[ii], result.length, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })\n\t )\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\t }\n\t }\n\t }\n\t }\n\t }\n\t return result\n\t },\n\t object: function(options) {\n\t var result = {},\n\t keys, fnKeys, key, parsedKey, inc, i;\n\n\t // 'obj|min-max': {}\n\t /* jshint -W041 */\n\t if (options.rule.min != undefined) {\n\t keys = Util.keys(options.template)\n\t keys = Random.shuffle(keys)\n\t keys = keys.slice(0, options.rule.count)\n\t for (i = 0; i < keys.length; i++) {\n\t key = keys[i]\n\t parsedKey = key.replace(Constant.RE_KEY, '$1')\n\t options.context.path.push(parsedKey)\n\t options.context.templatePath.push(key)\n\t result[parsedKey] = Handler.gen(options.template[key], key, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\t }\n\n\t } else {\n\t // 'obj': {}\n\t keys = []\n\t fnKeys = [] // #25 改变了非函数属性的顺序,查找起来不方便\n\t for (key in options.template) {\n\t (typeof options.template[key] === 'function' ? fnKeys : keys).push(key)\n\t }\n\t keys = keys.concat(fnKeys)\n\n\t /*\n\t 会改变非函数属性的顺序\n\t keys = Util.keys(options.template)\n\t keys.sort(function(a, b) {\n\t var afn = typeof options.template[a] === 'function'\n\t var bfn = typeof options.template[b] === 'function'\n\t if (afn === bfn) return 0\n\t if (afn && !bfn) return 1\n\t if (!afn && bfn) return -1\n\t })\n\t */\n\n\t for (i = 0; i < keys.length; i++) {\n\t key = keys[i]\n\t parsedKey = key.replace(Constant.RE_KEY, '$1')\n\t options.context.path.push(parsedKey)\n\t options.context.templatePath.push(key)\n\t result[parsedKey] = Handler.gen(options.template[key], key, {\n\t path: options.context.path,\n\t templatePath: options.context.templatePath,\n\t currentContext: result,\n\t templateCurrentContext: options.template,\n\t root: options.context.root || result,\n\t templateRoot: options.context.templateRoot || options.template\n\t })\n\t options.context.path.pop()\n\t options.context.templatePath.pop()\n\t // 'id|+1': 1\n\t inc = key.match(Constant.RE_KEY)\n\t if (inc && inc[2] && Util.type(options.template[key]) === 'number') {\n\t options.template[key] += parseInt(inc[2], 10)\n\t }\n\t }\n\t }\n\t return result\n\t },\n\t number: function(options) {\n\t var result, parts;\n\t if (options.rule.decimal) { // float\n\t options.template += ''\n\t parts = options.template.split('.')\n\t // 'float1|.1-10': 10,\n\t // 'float2|1-100.1-10': 1,\n\t // 'float3|999.1-10': 1,\n\t // 'float4|.3-10': 123.123,\n\t parts[0] = options.rule.range ? options.rule.count : parts[0]\n\t parts[1] = (parts[1] || '').slice(0, options.rule.dcount)\n\t while (parts[1].length < options.rule.dcount) {\n\t parts[1] += (\n\t // 最后一位不能为 0:如果最后一位为 0,会被 JS 引擎忽略掉。\n\t (parts[1].length < options.rule.dcount - 1) ? Random.character('number') : Random.character('123456789')\n\t )\n\t }\n\t result = parseFloat(parts.join('.'), 10)\n\t } else { // integer\n\t // 'grade1|1-100': 1,\n\t result = options.rule.range && !options.rule.parameters[2] ? options.rule.count : options.template\n\t }\n\t return result\n\t },\n\t boolean: function(options) {\n\t var result;\n\t // 'prop|multiple': false, 当前值是相反值的概率倍数\n\t // 'prop|probability-probability': false, 当前值与相反值的概率\n\t result = options.rule.parameters ? Random.bool(options.rule.min, options.rule.max, options.template) : options.template\n\t return result\n\t },\n\t string: function(options) {\n\t var result = '',\n\t i, placeholders, ph, phed;\n\t if (options.template.length) {\n\n\t // 'foo': '★',\n\t /* jshint -W041 */\n\t if (options.rule.count == undefined) {\n\t result += options.template\n\t }\n\n\t // 'star|1-5': '★',\n\t for (i = 0; i < options.rule.count; i++) {\n\t result += options.template\n\t }\n\t // 'email|1-10': '@EMAIL, ',\n\t placeholders = result.match(Constant.RE_PLACEHOLDER) || [] // A-Z_0-9 > \\w_\n\t for (i = 0; i < placeholders.length; i++) {\n\t ph = placeholders[i]\n\n\t // 遇到转义斜杠,不需要解析占位符\n\t if (/^\\\\/.test(ph)) {\n\t placeholders.splice(i--, 1)\n\t continue\n\t }\n\n\t phed = Handler.placeholder(ph, options.context.currentContext, options.context.templateCurrentContext, options)\n\n\t // 只有一个占位符,并且没有其他字符\n\t if (placeholders.length === 1 && ph === result && typeof phed !== typeof result) { // \n\t result = phed\n\t break\n\n\t if (Util.isNumeric(phed)) {\n\t result = parseFloat(phed, 10)\n\t break\n\t }\n\t if (/^(true|false)$/.test(phed)) {\n\t result = phed === 'true' ? true :\n\t phed === 'false' ? false :\n\t phed // 已经是布尔值\n\t break\n\t }\n\t }\n\t result = result.replace(ph, phed)\n\t }\n\n\t } else {\n\t // 'ASCII|1-10': '',\n\t // 'ASCII': '',\n\t result = options.rule.range ? Random.string(options.rule.count) : options.template\n\t }\n\t return result\n\t },\n\t 'function': function(options) {\n\t // ( context, options )\n\t return options.template.call(options.context.currentContext, options)\n\t },\n\t 'regexp': function(options) {\n\t var source = ''\n\n\t // 'name': /regexp/,\n\t /* jshint -W041 */\n\t if (options.rule.count == undefined) {\n\t source += options.template.source // regexp.source\n\t }\n\n\t // 'name|1-5': /regexp/,\n\t for (var i = 0; i < options.rule.count; i++) {\n\t source += options.template.source\n\t }\n\n\t return RE.Handler.gen(\n\t RE.Parser.parse(\n\t source\n\t )\n\t )\n\t }\n\t})\n\n\tHandler.extend({\n\t _all: function() {\n\t var re = {};\n\t for (var key in Random) re[key.toLowerCase()] = key\n\t return re\n\t },\n\t // 处理占位符,转换为最终值\n\t placeholder: function(placeholder, obj, templateContext, options) {\n\t // console.log(options.context.path)\n\t // 1 key, 2 params\n\t Constant.RE_PLACEHOLDER.exec('')\n\t var parts = Constant.RE_PLACEHOLDER.exec(placeholder),\n\t key = parts && parts[1],\n\t lkey = key && key.toLowerCase(),\n\t okey = this._all()[lkey],\n\t params = parts && parts[2] || ''\n\t var pathParts = this.splitPathToArray(key)\n\n\t // 解析占位符的参数\n\t try {\n\t // 1. 尝试保持参数的类型\n\t /*\n\t #24 [Window Firefox 30.0 引用 占位符 抛错](https://github.com/nuysoft/Mock/issues/24)\n\t [BX9056: 各浏览器下 window.eval 方法的执行上下文存在差异](http://www.w3help.org/zh-cn/causes/BX9056)\n\t 应该属于 Window Firefox 30.0 的 BUG\n\t */\n\t /* jshint -W061 */\n\t params = eval('(function(){ return [].splice.call(arguments, 0 ) })(' + params + ')')\n\t } catch (error) {\n\t // 2. 如果失败,只能解析为字符串\n\t // console.error(error)\n\t // if (error instanceof ReferenceError) params = parts[2].split(/,\\s*/);\n\t // else throw error\n\t params = parts[2].split(/,\\s*/)\n\t }\n\n\t // 占位符优先引用数据模板中的属性\n\t if (obj && (key in obj)) return obj[key]\n\n\t // @index @key\n\t // if (Constant.RE_INDEX.test(key)) return +options.name\n\t // if (Constant.RE_KEY.test(key)) return options.name\n\n\t // 绝对路径 or 相对路径\n\t if (\n\t key.charAt(0) === '/' ||\n\t pathParts.length > 1\n\t ) return this.getValueByKeyPath(key, options)\n\n\t // 递归引用数据模板中的属性\n\t if (templateContext &&\n\t (typeof templateContext === 'object') &&\n\t (key in templateContext) &&\n\t (placeholder !== templateContext[key]) // fix #15 避免自己依赖自己\n\t ) {\n\t // 先计算被引用的属性值\n\t templateContext[key] = Handler.gen(templateContext[key], key, {\n\t currentContext: obj,\n\t templateCurrentContext: templateContext\n\t })\n\t return templateContext[key]\n\t }\n\n\t // 如果未找到,则原样返回\n\t if (!(key in Random) && !(lkey in Random) && !(okey in Random)) return placeholder\n\n\t // 递归解析参数中的占位符\n\t for (var i = 0; i < params.length; i++) {\n\t Constant.RE_PLACEHOLDER.exec('')\n\t if (Constant.RE_PLACEHOLDER.test(params[i])) {\n\t params[i] = Handler.placeholder(params[i], obj, templateContext, options)\n\t }\n\t }\n\n\t var handle = Random[key] || Random[lkey] || Random[okey]\n\t switch (Util.type(handle)) {\n\t case 'array':\n\t // 自动从数组中取一个,例如 @areas\n\t return Random.pick(handle)\n\t case 'function':\n\t // 执行占位符方法(大多数情况)\n\t handle.options = options\n\t var re = handle.apply(Random, params)\n\t if (re === undefined) re = '' // 因为是在字符串中,所以默认为空字符串。\n\t delete handle.options\n\t return re\n\t }\n\t },\n\t getValueByKeyPath: function(key, options) {\n\t var originalKey = key\n\t var keyPathParts = this.splitPathToArray(key)\n\t var absolutePathParts = []\n\n\t // 绝对路径\n\t if (key.charAt(0) === '/') {\n\t absolutePathParts = [options.context.path[0]].concat(\n\t this.normalizePath(keyPathParts)\n\t )\n\t } else {\n\t // 相对路径\n\t if (keyPathParts.length > 1) {\n\t absolutePathParts = options.context.path.slice(0)\n\t absolutePathParts.pop()\n\t absolutePathParts = this.normalizePath(\n\t absolutePathParts.concat(keyPathParts)\n\t )\n\n\t }\n\t }\n\n\t try {\n\t key = keyPathParts[keyPathParts.length - 1]\n\t var currentContext = options.context.root\n\t var templateCurrentContext = options.context.templateRoot\n\t for (var i = 1; i < absolutePathParts.length - 1; i++) {\n\t currentContext = currentContext[absolutePathParts[i]]\n\t templateCurrentContext = templateCurrentContext[absolutePathParts[i]]\n\t }\n\t // 引用的值已经计算好\n\t if (currentContext && (key in currentContext)) return currentContext[key]\n\t \n\t // 尚未计算,递归引用数据模板中的属性\n\t if (templateCurrentContext &&\n\t (typeof templateCurrentContext === 'object') &&\n\t (key in templateCurrentContext) &&\n\t (originalKey !== templateCurrentContext[key]) // fix #15 避免自己依赖自己\n\t ) {\n\t // 先计算被引用的属性值\n\t templateCurrentContext[key] = Handler.gen(templateCurrentContext[key], key, {\n\t currentContext: currentContext,\n\t templateCurrentContext: templateCurrentContext\n\t })\n\t return templateCurrentContext[key]\n\t }\n\t } catch(err) { }\n\n\t return '@' + keyPathParts.join('/')\n\t },\n\t // https://github.com/kissyteam/kissy/blob/master/src/path/src/path.js\n\t normalizePath: function(pathParts) {\n\t var newPathParts = []\n\t for (var i = 0; i < pathParts.length; i++) {\n\t switch (pathParts[i]) {\n\t case '..':\n\t newPathParts.pop()\n\t break\n\t case '.':\n\t break\n\t default:\n\t newPathParts.push(pathParts[i])\n\t }\n\t }\n\t return newPathParts\n\t },\n\t splitPathToArray: function(path) {\n\t var parts = path.split(/\\/+/);\n\t if (!parts[parts.length - 1]) parts = parts.slice(0, -1)\n\t if (!parts[0]) parts = parts.slice(1)\n\t return parts;\n\t }\n\t})\n\n\tmodule.exports = Handler\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Constant\n\n\t 常量集合。\n\t */\n\t/*\n\t RE_KEY\n\t 'name|min-max': value\n\t 'name|count': value\n\t 'name|min-max.dmin-dmax': value\n\t 'name|min-max.dcount': value\n\t 'name|count.dmin-dmax': value\n\t 'name|count.dcount': value\n\t 'name|+step': value\n\n\t 1 name, 2 step, 3 range [ min, max ], 4 drange [ dmin, dmax ]\n\n\t RE_PLACEHOLDER\n\t placeholder(*)\n\n\t [正则查看工具](http://www.regexper.com/)\n\n\t #26 生成规则 支持 负数,例如 number|-100-100\n\t*/\n\tmodule.exports = {\n\t GUID: 1,\n\t RE_KEY: /(.+)\\|(?:\\+(\\d+)|([\\+\\-]?\\d+-?[\\+\\-]?\\d*)?(?:\\.(\\d+-?\\d*))?)/,\n\t RE_RANGE: /([\\+\\-]?\\d+)-?([\\+\\-]?\\d+)?/,\n\t RE_PLACEHOLDER: /\\\\*@([^@#%&()\\?\\s]+)(?:\\((.*?)\\))?/g\n\t // /\\\\*@([^@#%&()\\?\\s\\/\\.]+)(?:\\((.*?)\\))?/g\n\t // RE_INDEX: /^index$/,\n\t // RE_KEY: /^key$/\n\t}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Utilities\n\t*/\n\tvar Util = {}\n\n\tUtil.extend = function extend() {\n\t var target = arguments[0] || {},\n\t i = 1,\n\t length = arguments.length,\n\t options, name, src, copy, clone\n\n\t if (length === 1) {\n\t target = this\n\t i = 0\n\t }\n\n\t for (; i < length; i++) {\n\t options = arguments[i]\n\t if (!options) continue\n\n\t for (name in options) {\n\t src = target[name]\n\t copy = options[name]\n\n\t if (target === copy) continue\n\t if (copy === undefined) continue\n\n\t if (Util.isArray(copy) || Util.isObject(copy)) {\n\t if (Util.isArray(copy)) clone = src && Util.isArray(src) ? src : []\n\t if (Util.isObject(copy)) clone = src && Util.isObject(src) ? src : {}\n\n\t target[name] = Util.extend(clone, copy)\n\t } else {\n\t target[name] = copy\n\t }\n\t }\n\t }\n\n\t return target\n\t}\n\n\tUtil.each = function each(obj, iterator, context) {\n\t var i, key\n\t if (this.type(obj) === 'number') {\n\t for (i = 0; i < obj; i++) {\n\t iterator(i, i)\n\t }\n\t } else if (obj.length === +obj.length) {\n\t for (i = 0; i < obj.length; i++) {\n\t if (iterator.call(context, obj[i], i, obj) === false) break\n\t }\n\t } else {\n\t for (key in obj) {\n\t if (iterator.call(context, obj[key], key, obj) === false) break\n\t }\n\t }\n\t}\n\n\tUtil.type = function type(obj) {\n\t return (obj === null || obj === undefined) ? String(obj) : Object.prototype.toString.call(obj).match(/\\[object (\\w+)\\]/)[1].toLowerCase()\n\t}\n\n\tUtil.each('String Object Array RegExp Function'.split(' '), function(value) {\n\t Util['is' + value] = function(obj) {\n\t return Util.type(obj) === value.toLowerCase()\n\t }\n\t})\n\n\tUtil.isObjectOrArray = function(value) {\n\t return Util.isObject(value) || Util.isArray(value)\n\t}\n\n\tUtil.isNumeric = function(value) {\n\t return !isNaN(parseFloat(value)) && isFinite(value)\n\t}\n\n\tUtil.keys = function(obj) {\n\t var keys = [];\n\t for (var key in obj) {\n\t if (obj.hasOwnProperty(key)) keys.push(key)\n\t }\n\t return keys;\n\t}\n\tUtil.values = function(obj) {\n\t var values = [];\n\t for (var key in obj) {\n\t if (obj.hasOwnProperty(key)) values.push(obj[key])\n\t }\n\t return values;\n\t}\n\n\t/*\n\t ### Mock.heredoc(fn)\n\n\t * Mock.heredoc(fn)\n\n\t 以直观、安全的方式书写(多行)HTML 模板。\n\n\t **使用示例**如下所示:\n\n\t var tpl = Mock.heredoc(function() {\n\t /*!\n\t {{email}}{{age}}\n\t <!-- Mock { \n\t email: '@EMAIL',\n\t age: '@INT(1,100)'\n\t } -->\n\t *\\/\n\t })\n\t \n\t **相关阅读**\n\t * [Creating multiline strings in JavaScript](http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript)、\n\t*/\n\tUtil.heredoc = function heredoc(fn) {\n\t // 1. 移除起始的 function(){ /*!\n\t // 2. 移除末尾的 */ }\n\t // 3. 移除起始和末尾的空格\n\t return fn.toString()\n\t .replace(/^[^\\/]+\\/\\*!?/, '')\n\t .replace(/\\*\\/[^\\/]+$/, '')\n\t .replace(/^[\\s\\xA0]+/, '').replace(/[\\s\\xA0]+$/, '') // .trim()\n\t}\n\n\tUtil.noop = function() {}\n\n\tmodule.exports = Util\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t\t## Parser\n\n\t\t解析数据模板(属性名部分)。\n\n\t\t* Parser.parse( name )\n\t\t\t\n\t\t\t```json\n\t\t\t{\n\t\t\t\tparameters: [ name, inc, range, decimal ],\n\t\t\t\trnage: [ min , max ],\n\n\t\t\t\tmin: min,\n\t\t\t\tmax: max,\n\t\t\t\tcount : count,\n\n\t\t\t\tdecimal: decimal,\n\t\t\t\tdmin: dmin,\n\t\t\t\tdmax: dmax,\n\t\t\t\tdcount: dcount\n\t\t\t}\n\t\t\t```\n\t */\n\n\tvar Constant = __webpack_require__(2)\n\tvar Random = __webpack_require__(5)\n\n\t/* jshint -W041 */\n\tmodule.exports = {\n\t\tparse: function(name) {\n\t\t\tname = name == undefined ? '' : (name + '')\n\n\t\t\tvar parameters = (name || '').match(Constant.RE_KEY)\n\n\t\t\tvar range = parameters && parameters[3] && parameters[3].match(Constant.RE_RANGE)\n\t\t\tvar min = range && range[1] && parseInt(range[1], 10) // || 1\n\t\t\tvar max = range && range[2] && parseInt(range[2], 10) // || 1\n\t\t\t\t// repeat || min-max || 1\n\t\t\t\t// var count = range ? !range[2] && parseInt(range[1], 10) || Random.integer(min, max) : 1\n\t\t\tvar count = range ? !range[2] ? parseInt(range[1], 10) : Random.integer(min, max) : undefined\n\n\t\t\tvar decimal = parameters && parameters[4] && parameters[4].match(Constant.RE_RANGE)\n\t\t\tvar dmin = decimal && decimal[1] && parseInt(decimal[1], 10) // || 0,\n\t\t\tvar dmax = decimal && decimal[2] && parseInt(decimal[2], 10) // || 0,\n\t\t\t\t// int || dmin-dmax || 0\n\t\t\tvar dcount = decimal ? !decimal[2] && parseInt(decimal[1], 10) || Random.integer(dmin, dmax) : undefined\n\n\t\t\tvar result = {\n\t\t\t\t// 1 name, 2 inc, 3 range, 4 decimal\n\t\t\t\tparameters: parameters,\n\t\t\t\t// 1 min, 2 max\n\t\t\t\trange: range,\n\t\t\t\tmin: min,\n\t\t\t\tmax: max,\n\t\t\t\t// min-max\n\t\t\t\tcount: count,\n\t\t\t\t// 是否有 decimal\n\t\t\t\tdecimal: decimal,\n\t\t\t\tdmin: dmin,\n\t\t\t\tdmax: dmax,\n\t\t\t\t// dmin-dimax\n\t\t\t\tdcount: dcount\n\t\t\t}\n\n\t\t\tfor (var r in result) {\n\t\t\t\tif (result[r] != undefined) return result\n\t\t\t}\n\n\t\t\treturn {}\n\t\t}\n\t}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Mock.Random\n\t \n\t 工具类,用于生成各种随机数据。\n\t*/\n\n\tvar Util = __webpack_require__(3)\n\n\tvar Random = {\n\t extend: Util.extend\n\t}\n\n\tRandom.extend(__webpack_require__(6))\n\tRandom.extend(__webpack_require__(7))\n\tRandom.extend(__webpack_require__(8))\n\tRandom.extend(__webpack_require__(10))\n\tRandom.extend(__webpack_require__(13))\n\tRandom.extend(__webpack_require__(15))\n\tRandom.extend(__webpack_require__(16))\n\tRandom.extend(__webpack_require__(17))\n\tRandom.extend(__webpack_require__(14))\n\tRandom.extend(__webpack_require__(19))\n\n\tmodule.exports = Random\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Basics\n\t*/\n\tmodule.exports = {\n\t // 返回一个随机的布尔值。\n\t boolean: function(min, max, cur) {\n\t if (cur !== undefined) {\n\t min = typeof min !== 'undefined' && !isNaN(min) ? parseInt(min, 10) : 1\n\t max = typeof max !== 'undefined' && !isNaN(max) ? parseInt(max, 10) : 1\n\t return Math.random() > 1.0 / (min + max) * min ? !cur : cur\n\t }\n\n\t return Math.random() >= 0.5\n\t },\n\t bool: function(min, max, cur) {\n\t return this.boolean(min, max, cur)\n\t },\n\t // 返回一个随机的自然数(大于等于 0 的整数)。\n\t natural: function(min, max) {\n\t min = typeof min !== 'undefined' ? parseInt(min, 10) : 0\n\t max = typeof max !== 'undefined' ? parseInt(max, 10) : 9007199254740992 // 2^53\n\t return Math.round(Math.random() * (max - min)) + min\n\t },\n\t // 返回一个随机的整数。\n\t integer: function(min, max) {\n\t min = typeof min !== 'undefined' ? parseInt(min, 10) : -9007199254740992\n\t max = typeof max !== 'undefined' ? parseInt(max, 10) : 9007199254740992 // 2^53\n\t return Math.round(Math.random() * (max - min)) + min\n\t },\n\t int: function(min, max) {\n\t return this.integer(min, max)\n\t },\n\t // 返回一个随机的浮点数。\n\t float: function(min, max, dmin, dmax) {\n\t dmin = dmin === undefined ? 0 : dmin\n\t dmin = Math.max(Math.min(dmin, 17), 0)\n\t dmax = dmax === undefined ? 17 : dmax\n\t dmax = Math.max(Math.min(dmax, 17), 0)\n\t var ret = this.integer(min, max) + '.';\n\t for (var i = 0, dcount = this.natural(dmin, dmax); i < dcount; i++) {\n\t ret += (\n\t // 最后一位不能为 0:如果最后一位为 0,会被 JS 引擎忽略掉。\n\t (i < dcount - 1) ? this.character('number') : this.character('123456789')\n\t )\n\t }\n\t return parseFloat(ret, 10)\n\t },\n\t // 返回一个随机字符。\n\t character: function(pool) {\n\t var pools = {\n\t lower: 'abcdefghijklmnopqrstuvwxyz',\n\t upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n\t number: '0123456789',\n\t symbol: '!@#$%^&*()[]'\n\t }\n\t pools.alpha = pools.lower + pools.upper\n\t pools['undefined'] = pools.lower + pools.upper + pools.number + pools.symbol\n\n\t pool = pools[('' + pool).toLowerCase()] || pool\n\t return pool.charAt(this.natural(0, pool.length - 1))\n\t },\n\t char: function(pool) {\n\t return this.character(pool)\n\t },\n\t // 返回一个随机字符串。\n\t string: function(pool, min, max) {\n\t var len\n\t switch (arguments.length) {\n\t case 0: // ()\n\t len = this.natural(3, 7)\n\t break\n\t case 1: // ( length )\n\t len = pool\n\t pool = undefined\n\t break\n\t case 2:\n\t // ( pool, length )\n\t if (typeof arguments[0] === 'string') {\n\t len = min\n\t } else {\n\t // ( min, max )\n\t len = this.natural(pool, min)\n\t pool = undefined\n\t }\n\t break\n\t case 3:\n\t len = this.natural(min, max)\n\t break\n\t }\n\n\t var text = ''\n\t for (var i = 0; i < len; i++) {\n\t text += this.character(pool)\n\t }\n\n\t return text\n\t },\n\t str: function( /*pool, min, max*/ ) {\n\t return this.string.apply(this, arguments)\n\t },\n\t // 返回一个整型数组。\n\t range: function(start, stop, step) {\n\t // range( stop )\n\t if (arguments.length <= 1) {\n\t stop = start || 0;\n\t start = 0;\n\t }\n\t // range( start, stop )\n\t step = arguments[2] || 1;\n\n\t start = +start\n\t stop = +stop\n\t step = +step\n\n\t var len = Math.max(Math.ceil((stop - start) / step), 0);\n\t var idx = 0;\n\t var range = new Array(len);\n\n\t while (idx < len) {\n\t range[idx++] = start;\n\t start += step;\n\t }\n\n\t return range;\n\t }\n\t}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Date\n\t*/\n\tvar patternLetters = {\n\t yyyy: 'getFullYear',\n\t yy: function(date) {\n\t return ('' + date.getFullYear()).slice(2)\n\t },\n\t y: 'yy',\n\n\t MM: function(date) {\n\t var m = date.getMonth() + 1\n\t return m < 10 ? '0' + m : m\n\t },\n\t M: function(date) {\n\t return date.getMonth() + 1\n\t },\n\n\t dd: function(date) {\n\t var d = date.getDate()\n\t return d < 10 ? '0' + d : d\n\t },\n\t d: 'getDate',\n\n\t HH: function(date) {\n\t var h = date.getHours()\n\t return h < 10 ? '0' + h : h\n\t },\n\t H: 'getHours',\n\t hh: function(date) {\n\t var h = date.getHours() % 12\n\t return h < 10 ? '0' + h : h\n\t },\n\t h: function(date) {\n\t return date.getHours() % 12\n\t },\n\n\t mm: function(date) {\n\t var m = date.getMinutes()\n\t return m < 10 ? '0' + m : m\n\t },\n\t m: 'getMinutes',\n\n\t ss: function(date) {\n\t var s = date.getSeconds()\n\t return s < 10 ? '0' + s : s\n\t },\n\t s: 'getSeconds',\n\n\t SS: function(date) {\n\t var ms = date.getMilliseconds()\n\t return ms < 10 && '00' + ms || ms < 100 && '0' + ms || ms\n\t },\n\t S: 'getMilliseconds',\n\n\t A: function(date) {\n\t return date.getHours() < 12 ? 'AM' : 'PM'\n\t },\n\t a: function(date) {\n\t return date.getHours() < 12 ? 'am' : 'pm'\n\t },\n\t T: 'getTime'\n\t}\n\tmodule.exports = {\n\t // 日期占位符集合。\n\t _patternLetters: patternLetters,\n\t // 日期占位符正则。\n\t _rformat: new RegExp((function() {\n\t var re = []\n\t for (var i in patternLetters) re.push(i)\n\t return '(' + re.join('|') + ')'\n\t })(), 'g'),\n\t // 格式化日期。\n\t _formatDate: function(date, format) {\n\t return format.replace(this._rformat, function creatNewSubString($0, flag) {\n\t return typeof patternLetters[flag] === 'function' ? patternLetters[flag](date) :\n\t patternLetters[flag] in patternLetters ? creatNewSubString($0, patternLetters[flag]) :\n\t date[patternLetters[flag]]()\n\t })\n\t },\n\t // 生成一个随机的 Date 对象。\n\t _randomDate: function(min, max) { // min, max\n\t min = min === undefined ? new Date(0) : min\n\t max = max === undefined ? new Date() : max\n\t return new Date(Math.random() * (max.getTime() - min.getTime()))\n\t },\n\t // 返回一个随机的日期字符串。\n\t date: function(format) {\n\t format = format || 'yyyy-MM-dd'\n\t return this._formatDate(this._randomDate(), format)\n\t },\n\t // 返回一个随机的时间字符串。\n\t time: function(format) {\n\t format = format || 'HH:mm:ss'\n\t return this._formatDate(this._randomDate(), format)\n\t },\n\t // 返回一个随机的日期和时间字符串。\n\t datetime: function(format) {\n\t format = format || 'yyyy-MM-dd HH:mm:ss'\n\t return this._formatDate(this._randomDate(), format)\n\t },\n\t // 返回当前的日期和时间字符串。\n\t now: function(unit, format) {\n\t // now(unit) now(format)\n\t if (arguments.length === 1) {\n\t // now(format)\n\t if (!/year|month|day|hour|minute|second|week/.test(unit)) {\n\t format = unit\n\t unit = ''\n\t }\n\t }\n\t unit = (unit || '').toLowerCase()\n\t format = format || 'yyyy-MM-dd HH:mm:ss'\n\n\t var date = new Date()\n\n\t /* jshint -W086 */\n\t // 参考自 http://momentjs.cn/docs/#/manipulating/start-of/\n\t switch (unit) {\n\t case 'year':\n\t date.setMonth(0)\n\t case 'month':\n\t date.setDate(1)\n\t case 'week':\n\t case 'day':\n\t date.setHours(0)\n\t case 'hour':\n\t date.setMinutes(0)\n\t case 'minute':\n\t date.setSeconds(0)\n\t case 'second':\n\t date.setMilliseconds(0)\n\t }\n\t switch (unit) {\n\t case 'week':\n\t date.setDate(date.getDate() - date.getDay())\n\t }\n\n\t return this._formatDate(date, format)\n\t }\n\t}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module) {/* global document */\n\t/*\n\t ## Image\n\t*/\n\tmodule.exports = {\n\t // 常见的广告宽高\n\t _adSize: [\n\t '300x250', '250x250', '240x400', '336x280', '180x150',\n\t '720x300', '468x60', '234x60', '88x31', '120x90',\n\t '120x60', '120x240', '125x125', '728x90', '160x600',\n\t '120x600', '300x600'\n\t ],\n\t // 常见的屏幕宽高\n\t _screenSize: [\n\t '320x200', '320x240', '640x480', '800x480', '800x480',\n\t '1024x600', '1024x768', '1280x800', '1440x900', '1920x1200',\n\t '2560x1600'\n\t ],\n\t // 常见的视频宽高\n\t _videoSize: ['720x480', '768x576', '1280x720', '1920x1080'],\n\t /*\n\t 生成一个随机的图片地址。\n\n\t 替代图片源\n\t http://fpoimg.com/\n\t 参考自 \n\t http://rensanning.iteye.com/blog/1933310\n\t http://code.tutsplus.com/articles/the-top-8-placeholders-for-web-designers--net-19485\n\t */\n\t image: function(size, background, foreground, format, text) {\n\t // Random.image( size, background, foreground, text )\n\t if (arguments.length === 4) {\n\t text = format\n\t format = undefined\n\t }\n\t // Random.image( size, background, text )\n\t if (arguments.length === 3) {\n\t text = foreground\n\t foreground = undefined\n\t }\n\t // Random.image()\n\t if (!size) size = this.pick(this._adSize)\n\n\t if (background && ~background.indexOf('#')) background = background.slice(1)\n\t if (foreground && ~foreground.indexOf('#')) foreground = foreground.slice(1)\n\n\t // http://dummyimage.com/600x400/cc00cc/470047.png&text=hello\n\t return 'http://dummyimage.com/' + size +\n\t (background ? '/' + background : '') +\n\t (foreground ? '/' + foreground : '') +\n\t (format ? '.' + format : '') +\n\t (text ? '&text=' + text : '')\n\t },\n\t img: function() {\n\t return this.image.apply(this, arguments)\n\t },\n\n\t /*\n\t BrandColors\n\t http://brandcolors.net/\n\t A collection of major brand color codes curated by Galen Gidman.\n\t 大牌公司的颜色集合\n\n\t // 获取品牌和颜色\n\t $('h2').each(function(index, item){\n\t item = $(item)\n\t console.log('\\'' + item.text() + '\\'', ':', '\\'' + item.next().text() + '\\'', ',')\n\t })\n\t */\n\t _brandColors: {\n\t '4ormat': '#fb0a2a',\n\t '500px': '#02adea',\n\t 'About.me (blue)': '#00405d',\n\t 'About.me (yellow)': '#ffcc33',\n\t 'Addvocate': '#ff6138',\n\t 'Adobe': '#ff0000',\n\t 'Aim': '#fcd20b',\n\t 'Amazon': '#e47911',\n\t 'Android': '#a4c639',\n\t 'Angie\\'s List': '#7fbb00',\n\t 'AOL': '#0060a3',\n\t 'Atlassian': '#003366',\n\t 'Behance': '#053eff',\n\t 'Big Cartel': '#97b538',\n\t 'bitly': '#ee6123',\n\t 'Blogger': '#fc4f08',\n\t 'Boeing': '#0039a6',\n\t 'Booking.com': '#003580',\n\t 'Carbonmade': '#613854',\n\t 'Cheddar': '#ff7243',\n\t 'Code School': '#3d4944',\n\t 'Delicious': '#205cc0',\n\t 'Dell': '#3287c1',\n\t 'Designmoo': '#e54a4f',\n\t 'Deviantart': '#4e6252',\n\t 'Designer News': '#2d72da',\n\t 'Devour': '#fd0001',\n\t 'DEWALT': '#febd17',\n\t 'Disqus (blue)': '#59a3fc',\n\t 'Disqus (orange)': '#db7132',\n\t 'Dribbble': '#ea4c89',\n\t 'Dropbox': '#3d9ae8',\n\t 'Drupal': '#0c76ab',\n\t 'Dunked': '#2a323a',\n\t 'eBay': '#89c507',\n\t 'Ember': '#f05e1b',\n\t 'Engadget': '#00bdf6',\n\t 'Envato': '#528036',\n\t 'Etsy': '#eb6d20',\n\t 'Evernote': '#5ba525',\n\t 'Fab.com': '#dd0017',\n\t 'Facebook': '#3b5998',\n\t 'Firefox': '#e66000',\n\t 'Flickr (blue)': '#0063dc',\n\t 'Flickr (pink)': '#ff0084',\n\t 'Forrst': '#5b9a68',\n\t 'Foursquare': '#25a0ca',\n\t 'Garmin': '#007cc3',\n\t 'GetGlue': '#2d75a2',\n\t 'Gimmebar': '#f70078',\n\t 'GitHub': '#171515',\n\t 'Google Blue': '#0140ca',\n\t 'Google Green': '#16a61e',\n\t 'Google Red': '#dd1812',\n\t 'Google Yellow': '#fcca03',\n\t 'Google+': '#dd4b39',\n\t 'Grooveshark': '#f77f00',\n\t 'Groupon': '#82b548',\n\t 'Hacker News': '#ff6600',\n\t 'HelloWallet': '#0085ca',\n\t 'Heroku (light)': '#c7c5e6',\n\t 'Heroku (dark)': '#6567a5',\n\t 'HootSuite': '#003366',\n\t 'Houzz': '#73ba37',\n\t 'HTML5': '#ec6231',\n\t 'IKEA': '#ffcc33',\n\t 'IMDb': '#f3ce13',\n\t 'Instagram': '#3f729b',\n\t 'Intel': '#0071c5',\n\t 'Intuit': '#365ebf',\n\t 'Kickstarter': '#76cc1e',\n\t 'kippt': '#e03500',\n\t 'Kodery': '#00af81',\n\t 'LastFM': '#c3000d',\n\t 'LinkedIn': '#0e76a8',\n\t 'Livestream': '#cf0005',\n\t 'Lumo': '#576396',\n\t 'Mixpanel': '#a086d3',\n\t 'Meetup': '#e51937',\n\t 'Nokia': '#183693',\n\t 'NVIDIA': '#76b900',\n\t 'Opera': '#cc0f16',\n\t 'Path': '#e41f11',\n\t 'PayPal (dark)': '#1e477a',\n\t 'PayPal (light)': '#3b7bbf',\n\t 'Pinboard': '#0000e6',\n\t 'Pinterest': '#c8232c',\n\t 'PlayStation': '#665cbe',\n\t 'Pocket': '#ee4056',\n\t 'Prezi': '#318bff',\n\t 'Pusha': '#0f71b4',\n\t 'Quora': '#a82400',\n\t 'QUOTE.fm': '#66ceff',\n\t 'Rdio': '#008fd5',\n\t 'Readability': '#9c0000',\n\t 'Red Hat': '#cc0000',\n\t 'Resource': '#7eb400',\n\t 'Rockpack': '#0ba6ab',\n\t 'Roon': '#62b0d9',\n\t 'RSS': '#ee802f',\n\t 'Salesforce': '#1798c1',\n\t 'Samsung': '#0c4da2',\n\t 'Shopify': '#96bf48',\n\t 'Skype': '#00aff0',\n\t 'Snagajob': '#f47a20',\n\t 'Softonic': '#008ace',\n\t 'SoundCloud': '#ff7700',\n\t 'Space Box': '#f86960',\n\t 'Spotify': '#81b71a',\n\t 'Sprint': '#fee100',\n\t 'Squarespace': '#121212',\n\t 'StackOverflow': '#ef8236',\n\t 'Staples': '#cc0000',\n\t 'Status Chart': '#d7584f',\n\t 'Stripe': '#008cdd',\n\t 'StudyBlue': '#00afe1',\n\t 'StumbleUpon': '#f74425',\n\t 'T-Mobile': '#ea0a8e',\n\t 'Technorati': '#40a800',\n\t 'The Next Web': '#ef4423',\n\t 'Treehouse': '#5cb868',\n\t 'Trulia': '#5eab1f',\n\t 'Tumblr': '#34526f',\n\t 'Twitch.tv': '#6441a5',\n\t 'Twitter': '#00acee',\n\t 'TYPO3': '#ff8700',\n\t 'Ubuntu': '#dd4814',\n\t 'Ustream': '#3388ff',\n\t 'Verizon': '#ef1d1d',\n\t 'Vimeo': '#86c9ef',\n\t 'Vine': '#00a478',\n\t 'Virb': '#06afd8',\n\t 'Virgin Media': '#cc0000',\n\t 'Wooga': '#5b009c',\n\t 'WordPress (blue)': '#21759b',\n\t 'WordPress (orange)': '#d54e21',\n\t 'WordPress (grey)': '#464646',\n\t 'Wunderlist': '#2b88d9',\n\t 'XBOX': '#9bc848',\n\t 'XING': '#126567',\n\t 'Yahoo!': '#720e9e',\n\t 'Yandex': '#ffcc00',\n\t 'Yelp': '#c41200',\n\t 'YouTube': '#c4302b',\n\t 'Zalongo': '#5498dc',\n\t 'Zendesk': '#78a300',\n\t 'Zerply': '#9dcc7a',\n\t 'Zootool': '#5e8b1d'\n\t },\n\t _brandNames: function() {\n\t var brands = [];\n\t for (var b in this._brandColors) {\n\t brands.push(b)\n\t }\n\t return brands\n\t },\n\t /*\n\t 生成一段随机的 Base64 图片编码。\n\n\t https://github.com/imsky/holder\n\t Holder renders image placeholders entirely on the client side.\n\n\t dataImageHolder: function(size) {\n\t return 'holder.js/' + size\n\t },\n\t */\n\t dataImage: function(size, text) {\n\t var canvas\n\t if (typeof document !== 'undefined') {\n\t canvas = document.createElement('canvas')\n\t } else {\n\t /*\n\t https://github.com/Automattic/node-canvas\n\t npm install canvas --save\n\t 安装问题:\n\t * http://stackoverflow.com/questions/22953206/gulp-issues-with-cario-install-command-not-found-when-trying-to-installing-canva\n\t * https://github.com/Automattic/node-canvas/issues/415\n\t * https://github.com/Automattic/node-canvas/wiki/_pages\n\n\t PS:node-canvas 的安装过程实在是太繁琐了,所以不放入 package.json 的 dependencies。\n\t */\n\t var Canvas = module.require('canvas')\n\t canvas = new Canvas()\n\t }\n\n\t var ctx = canvas && canvas.getContext && canvas.getContext(\"2d\")\n\t if (!canvas || !ctx) return ''\n\n\t if (!size) size = this.pick(this._adSize)\n\t text = text !== undefined ? text : size\n\n\t size = size.split('x')\n\n\t var width = parseInt(size[0], 10),\n\t height = parseInt(size[1], 10),\n\t background = this._brandColors[this.pick(this._brandNames())],\n\t foreground = '#FFF',\n\t text_height = 14,\n\t font = 'sans-serif';\n\n\t canvas.width = width\n\t canvas.height = height\n\t ctx.textAlign = 'center'\n\t ctx.textBaseline = 'middle'\n\t ctx.fillStyle = background\n\t ctx.fillRect(0, 0, width, height)\n\t ctx.fillStyle = foreground\n\t ctx.font = 'bold ' + text_height + 'px ' + font\n\t ctx.fillText(text, (width / 2), (height / 2), width)\n\t return canvas.toDataURL('image/png')\n\t }\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)(module)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Color\n\n\t http://llllll.li/randomColor/\n\t A color generator for JavaScript.\n\t randomColor generates attractive colors by default. More specifically, randomColor produces bright colors with a reasonably high saturation. This makes randomColor particularly useful for data visualizations and generative art.\n\n\t http://randomcolour.com/\n\t var bg_colour = Math.floor(Math.random() * 16777215).toString(16);\n\t bg_colour = \"#\" + (\"000000\" + bg_colour).slice(-6);\n\t document.bgColor = bg_colour;\n\t \n\t http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n\t Creating random colors is actually more difficult than it seems. The randomness itself is easy, but aesthetically pleasing randomness is more difficult.\n\t https://github.com/devongovett/color-generator\n\n\t http://www.paulirish.com/2009/random-hex-color-code-snippets/\n\t Random Hex Color Code Generator in JavaScript\n\n\t http://chancejs.com/#color\n\t chance.color()\n\t // => '#79c157'\n\t chance.color({format: 'hex'})\n\t // => '#d67118'\n\t chance.color({format: 'shorthex'})\n\t // => '#60f'\n\t chance.color({format: 'rgb'})\n\t // => 'rgb(110,52,164)'\n\n\t http://tool.c7sky.com/webcolor\n\t 网页设计常用色彩搭配表\n\t \n\t https://github.com/One-com/one-color\n\t An OO-based JavaScript color parser/computation toolkit with support for RGB, HSV, HSL, CMYK, and alpha channels.\n\t API 很赞\n\n\t https://github.com/harthur/color\n\t JavaScript color conversion and manipulation library\n\n\t https://github.com/leaverou/css-colors\n\t Share & convert CSS colors\n\t http://leaverou.github.io/css-colors/#slategray\n\t Type a CSS color keyword, #hex, hsl(), rgba(), whatever:\n\n\t 色调 hue\n\t http://baike.baidu.com/view/23368.htm\n\t 色调指的是一幅画中画面色彩的总体倾向,是大的色彩效果。\n\t 饱和度 saturation\n\t http://baike.baidu.com/view/189644.htm\n\t 饱和度是指色彩的鲜艳程度,也称色彩的纯度。饱和度取决于该色中含色成分和消色成分(灰色)的比例。含色成分越大,饱和度越大;消色成分越大,饱和度越小。\n\t 亮度 brightness\n\t http://baike.baidu.com/view/34773.htm\n\t 亮度是指发光体(反光体)表面发光(反光)强弱的物理量。\n\t 照度 luminosity\n\t 物体被照亮的程度,采用单位面积所接受的光通量来表示,表示单位为勒[克斯](Lux,lx) ,即 1m / m2 。\n\n\t http://stackoverflow.com/questions/1484506/random-color-generator-in-javascript\n\t var letters = '0123456789ABCDEF'.split('')\n\t var color = '#'\n\t for (var i = 0; i < 6; i++) {\n\t color += letters[Math.floor(Math.random() * 16)]\n\t }\n\t return color\n\t \n\t // 随机生成一个无脑的颜色,格式为 '#RRGGBB'。\n\t // _brainlessColor()\n\t var color = Math.floor(\n\t Math.random() *\n\t (16 * 16 * 16 * 16 * 16 * 16 - 1)\n\t ).toString(16)\n\t color = \"#\" + (\"000000\" + color).slice(-6)\n\t return color.toUpperCase()\n\t*/\n\n\tvar Convert = __webpack_require__(11)\n\tvar DICT = __webpack_require__(12)\n\n\tmodule.exports = {\n\t // 随机生成一个有吸引力的颜色,格式为 '#RRGGBB'。\n\t color: function(name) {\n\t if (name || DICT[name]) return DICT[name].nicer\n\t return this.hex()\n\t },\n\t // #DAC0DE\n\t hex: function() {\n\t var hsv = this._goldenRatioColor()\n\t var rgb = Convert.hsv2rgb(hsv)\n\t var hex = Convert.rgb2hex(rgb[0], rgb[1], rgb[2])\n\t return hex\n\t },\n\t // rgb(128,255,255)\n\t rgb: function() {\n\t var hsv = this._goldenRatioColor()\n\t var rgb = Convert.hsv2rgb(hsv)\n\t return 'rgb(' +\n\t parseInt(rgb[0], 10) + ', ' +\n\t parseInt(rgb[1], 10) + ', ' +\n\t parseInt(rgb[2], 10) + ')'\n\t },\n\t // rgba(128,255,255,0.3)\n\t rgba: function() {\n\t var hsv = this._goldenRatioColor()\n\t var rgb = Convert.hsv2rgb(hsv)\n\t return 'rgba(' +\n\t parseInt(rgb[0], 10) + ', ' +\n\t parseInt(rgb[1], 10) + ', ' +\n\t parseInt(rgb[2], 10) + ', ' +\n\t Math.random().toFixed(2) + ')'\n\t },\n\t // hsl(300,80%,90%)\n\t hsl: function() {\n\t var hsv = this._goldenRatioColor()\n\t var hsl = Convert.hsv2hsl(hsv)\n\t return 'hsl(' +\n\t parseInt(hsl[0], 10) + ', ' +\n\t parseInt(hsl[1], 10) + ', ' +\n\t parseInt(hsl[2], 10) + ')'\n\t },\n\t // http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n\t // https://github.com/devongovett/color-generator/blob/master/index.js\n\t // 随机生成一个有吸引力的颜色。\n\t _goldenRatioColor: function(saturation, value) {\n\t this._goldenRatio = 0.618033988749895\n\t this._hue = this._hue || Math.random()\n\t this._hue += this._goldenRatio\n\t this._hue %= 1\n\n\t if (typeof saturation !== \"number\") saturation = 0.5;\n\t if (typeof value !== \"number\") value = 0.95;\n\n\t return [\n\t this._hue * 360,\n\t saturation * 100,\n\t value * 100\n\t ]\n\t }\n\t}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Color Convert\n\n\t http://blog.csdn.net/idfaya/article/details/6770414\n\t 颜色空间RGB与HSV(HSL)的转换\n\t*/\n\t// https://github.com/harthur/color-convert/blob/master/conversions.js\n\tmodule.exports = {\n\t\trgb2hsl: function rgb2hsl(rgb) {\n\t\t\tvar r = rgb[0] / 255,\n\t\t\t\tg = rgb[1] / 255,\n\t\t\t\tb = rgb[2] / 255,\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tmax = Math.max(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\th, s, l;\n\n\t\t\tif (max == min)\n\t\t\t\th = 0;\n\t\t\telse if (r == max)\n\t\t\t\th = (g - b) / delta;\n\t\t\telse if (g == max)\n\t\t\t\th = 2 + (b - r) / delta;\n\t\t\telse if (b == max)\n\t\t\t\th = 4 + (r - g) / delta;\n\n\t\t\th = Math.min(h * 60, 360);\n\n\t\t\tif (h < 0)\n\t\t\t\th += 360;\n\n\t\t\tl = (min + max) / 2;\n\n\t\t\tif (max == min)\n\t\t\t\ts = 0;\n\t\t\telse if (l <= 0.5)\n\t\t\t\ts = delta / (max + min);\n\t\t\telse\n\t\t\t\ts = delta / (2 - max - min);\n\n\t\t\treturn [h, s * 100, l * 100];\n\t\t},\n\t\trgb2hsv: function rgb2hsv(rgb) {\n\t\t\tvar r = rgb[0],\n\t\t\t\tg = rgb[1],\n\t\t\t\tb = rgb[2],\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tmax = Math.max(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\th, s, v;\n\n\t\t\tif (max === 0)\n\t\t\t\ts = 0;\n\t\t\telse\n\t\t\t\ts = (delta / max * 1000) / 10;\n\n\t\t\tif (max == min)\n\t\t\t\th = 0;\n\t\t\telse if (r == max)\n\t\t\t\th = (g - b) / delta;\n\t\t\telse if (g == max)\n\t\t\t\th = 2 + (b - r) / delta;\n\t\t\telse if (b == max)\n\t\t\t\th = 4 + (r - g) / delta;\n\n\t\t\th = Math.min(h * 60, 360);\n\n\t\t\tif (h < 0)\n\t\t\t\th += 360;\n\n\t\t\tv = ((max / 255) * 1000) / 10;\n\n\t\t\treturn [h, s, v];\n\t\t},\n\t\thsl2rgb: function hsl2rgb(hsl) {\n\t\t\tvar h = hsl[0] / 360,\n\t\t\t\ts = hsl[1] / 100,\n\t\t\t\tl = hsl[2] / 100,\n\t\t\t\tt1, t2, t3, rgb, val;\n\n\t\t\tif (s === 0) {\n\t\t\t\tval = l * 255;\n\t\t\t\treturn [val, val, val];\n\t\t\t}\n\n\t\t\tif (l < 0.5)\n\t\t\t\tt2 = l * (1 + s);\n\t\t\telse\n\t\t\t\tt2 = l + s - l * s;\n\t\t\tt1 = 2 * l - t2;\n\n\t\t\trgb = [0, 0, 0];\n\t\t\tfor (var i = 0; i < 3; i++) {\n\t\t\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\t\t\tif (t3 < 0) t3++;\n\t\t\t\tif (t3 > 1) t3--;\n\n\t\t\t\tif (6 * t3 < 1)\n\t\t\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t\t\telse if (2 * t3 < 1)\n\t\t\t\t\tval = t2;\n\t\t\t\telse if (3 * t3 < 2)\n\t\t\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t\t\telse\n\t\t\t\t\tval = t1;\n\n\t\t\t\trgb[i] = val * 255;\n\t\t\t}\n\n\t\t\treturn rgb;\n\t\t},\n\t\thsl2hsv: function hsl2hsv(hsl) {\n\t\t\tvar h = hsl[0],\n\t\t\t\ts = hsl[1] / 100,\n\t\t\t\tl = hsl[2] / 100,\n\t\t\t\tsv, v;\n\t\t\tl *= 2;\n\t\t\ts *= (l <= 1) ? l : 2 - l;\n\t\t\tv = (l + s) / 2;\n\t\t\tsv = (2 * s) / (l + s);\n\t\t\treturn [h, sv * 100, v * 100];\n\t\t},\n\t\thsv2rgb: function hsv2rgb(hsv) {\n\t\t\tvar h = hsv[0] / 60\n\t\t\tvar s = hsv[1] / 100\n\t\t\tvar v = hsv[2] / 100\n\t\t\tvar hi = Math.floor(h) % 6\n\n\t\t\tvar f = h - Math.floor(h)\n\t\t\tvar p = 255 * v * (1 - s)\n\t\t\tvar q = 255 * v * (1 - (s * f))\n\t\t\tvar t = 255 * v * (1 - (s * (1 - f)))\n\n\t\t\tv = 255 * v\n\n\t\t\tswitch (hi) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn [v, t, p]\n\t\t\t\tcase 1:\n\t\t\t\t\treturn [q, v, p]\n\t\t\t\tcase 2:\n\t\t\t\t\treturn [p, v, t]\n\t\t\t\tcase 3:\n\t\t\t\t\treturn [p, q, v]\n\t\t\t\tcase 4:\n\t\t\t\t\treturn [t, p, v]\n\t\t\t\tcase 5:\n\t\t\t\t\treturn [v, p, q]\n\t\t\t}\n\t\t},\n\t\thsv2hsl: function hsv2hsl(hsv) {\n\t\t\tvar h = hsv[0],\n\t\t\t\ts = hsv[1] / 100,\n\t\t\t\tv = hsv[2] / 100,\n\t\t\t\tsl, l;\n\n\t\t\tl = (2 - s) * v;\n\t\t\tsl = s * v;\n\t\t\tsl /= (l <= 1) ? l : 2 - l;\n\t\t\tl /= 2;\n\t\t\treturn [h, sl * 100, l * 100];\n\t\t},\n\t\t// http://www.140byt.es/keywords/color\n\t\trgb2hex: function(\n\t\t\ta, // red, as a number from 0 to 255\n\t\t\tb, // green, as a number from 0 to 255\n\t\t\tc // blue, as a number from 0 to 255\n\t\t) {\n\t\t\treturn \"#\" + ((256 + a << 8 | b) << 8 | c).toString(16).slice(1)\n\t\t},\n\t\thex2rgb: function(\n\t\t\ta // take a \"#xxxxxx\" hex string,\n\t\t) {\n\t\t\ta = '0x' + a.slice(1).replace(a.length > 4 ? a : /./g, '$&$&') | 0;\n\t\t\treturn [a >> 16, a >> 8 & 255, a & 255]\n\t\t}\n\t}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Color 字典数据\n\n\t 字典数据来源 [A nicer color palette for the web](http://clrs.cc/)\n\t*/\n\tmodule.exports = {\n\t // name value nicer\n\t navy: {\n\t value: '#000080',\n\t nicer: '#001F3F'\n\t },\n\t blue: {\n\t value: '#0000ff',\n\t nicer: '#0074D9'\n\t },\n\t aqua: {\n\t value: '#00ffff',\n\t nicer: '#7FDBFF'\n\t },\n\t teal: {\n\t value: '#008080',\n\t nicer: '#39CCCC'\n\t },\n\t olive: {\n\t value: '#008000',\n\t nicer: '#3D9970'\n\t },\n\t green: {\n\t value: '#008000',\n\t nicer: '#2ECC40'\n\t },\n\t lime: {\n\t value: '#00ff00',\n\t nicer: '#01FF70'\n\t },\n\t yellow: {\n\t value: '#ffff00',\n\t nicer: '#FFDC00'\n\t },\n\t orange: {\n\t value: '#ffa500',\n\t nicer: '#FF851B'\n\t },\n\t red: {\n\t value: '#ff0000',\n\t nicer: '#FF4136'\n\t },\n\t maroon: {\n\t value: '#800000',\n\t nicer: '#85144B'\n\t },\n\t fuchsia: {\n\t value: '#ff00ff',\n\t nicer: '#F012BE'\n\t },\n\t purple: {\n\t value: '#800080',\n\t nicer: '#B10DC9'\n\t },\n\t silver: {\n\t value: '#c0c0c0',\n\t nicer: '#DDDDDD'\n\t },\n\t gray: {\n\t value: '#808080',\n\t nicer: '#AAAAAA'\n\t },\n\t black: {\n\t value: '#000000',\n\t nicer: '#111111'\n\t },\n\t white: {\n\t value: '#FFFFFF',\n\t nicer: '#FFFFFF'\n\t }\n\t}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Text\n\n\t http://www.lipsum.com/\n\t*/\n\tvar Basic = __webpack_require__(6)\n\tvar Helper = __webpack_require__(14)\n\n\tfunction range(defaultMin, defaultMax, min, max) {\n\t return min === undefined ? Basic.natural(defaultMin, defaultMax) : // ()\n\t max === undefined ? min : // ( len )\n\t Basic.natural(parseInt(min, 10), parseInt(max, 10)) // ( min, max )\n\t}\n\n\tmodule.exports = {\n\t // 随机生成一段文本。\n\t paragraph: function(min, max) {\n\t var len = range(3, 7, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.sentence())\n\t }\n\t return result.join(' ')\n\t },\n\t // \n\t cparagraph: function(min, max) {\n\t var len = range(3, 7, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.csentence())\n\t }\n\t return result.join('')\n\t },\n\t // 随机生成一个句子,第一个单词的首字母大写。\n\t sentence: function(min, max) {\n\t var len = range(12, 18, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.word())\n\t }\n\t return Helper.capitalize(result.join(' ')) + '.'\n\t },\n\t // 随机生成一个中文句子。\n\t csentence: function(min, max) {\n\t var len = range(12, 18, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.cword())\n\t }\n\n\t return result.join('') + '。'\n\t },\n\t // 随机生成一个单词。\n\t word: function(min, max) {\n\t var len = range(3, 10, min, max)\n\t var result = '';\n\t for (var i = 0; i < len; i++) {\n\t result += Basic.character('lower')\n\t }\n\t return result\n\t },\n\t // 随机生成一个或多个汉字。\n\t cword: function(pool, min, max) {\n\t // 最常用的 500 个汉字 http://baike.baidu.com/view/568436.htm\n\t var DICT_KANZI = '的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞'\n\n\t var len\n\t switch (arguments.length) {\n\t case 0: // ()\n\t pool = DICT_KANZI\n\t len = 1\n\t break\n\t case 1: // ( pool )\n\t if (typeof arguments[0] === 'string') {\n\t len = 1\n\t } else {\n\t // ( length )\n\t len = pool\n\t pool = DICT_KANZI\n\t }\n\t break\n\t case 2:\n\t // ( pool, length )\n\t if (typeof arguments[0] === 'string') {\n\t len = min\n\t } else {\n\t // ( min, max )\n\t len = this.natural(pool, min)\n\t pool = DICT_KANZI\n\t }\n\t break\n\t case 3:\n\t len = this.natural(min, max)\n\t break\n\t }\n\n\t var result = ''\n\t for (var i = 0; i < len; i++) {\n\t result += pool.charAt(this.natural(0, pool.length - 1))\n\t }\n\t return result\n\t },\n\t // 随机生成一句标题,其中每个单词的首字母大写。\n\t title: function(min, max) {\n\t var len = range(3, 7, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.capitalize(this.word()))\n\t }\n\t return result.join(' ')\n\t },\n\t // 随机生成一句中文标题。\n\t ctitle: function(min, max) {\n\t var len = range(3, 7, min, max)\n\t var result = []\n\t for (var i = 0; i < len; i++) {\n\t result.push(this.cword())\n\t }\n\t return result.join('')\n\t }\n\t}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Helpers\n\t*/\n\n\tvar Util = __webpack_require__(3)\n\n\tmodule.exports = {\n\t\t// 把字符串的第一个字母转换为大写。\n\t\tcapitalize: function(word) {\n\t\t\treturn (word + '').charAt(0).toUpperCase() + (word + '').substr(1)\n\t\t},\n\t\t// 把字符串转换为大写。\n\t\tupper: function(str) {\n\t\t\treturn (str + '').toUpperCase()\n\t\t},\n\t\t// 把字符串转换为小写。\n\t\tlower: function(str) {\n\t\t\treturn (str + '').toLowerCase()\n\t\t},\n\t\t// 从数组中随机选取一个元素,并返回。\n\t\tpick: function pick(arr, min, max) {\n\t\t\t// pick( item1, item2 ... )\n\t\t\tif (!Util.isArray(arr)) {\n\t\t\t\tarr = [].slice.call(arguments)\n\t\t\t\tmin = 1\n\t\t\t\tmax = 1\n\t\t\t} else {\n\t\t\t\t// pick( [ item1, item2 ... ] )\n\t\t\t\tif (min === undefined) min = 1\n\n\t\t\t\t// pick( [ item1, item2 ... ], count )\n\t\t\t\tif (max === undefined) max = min\n\t\t\t}\n\n\t\t\tif (min === 1 && max === 1) return arr[this.natural(0, arr.length - 1)]\n\n\t\t\t// pick( [ item1, item2 ... ], min, max )\n\t\t\treturn this.shuffle(arr, min, max)\n\n\t\t\t// 通过参数个数判断方法签名,扩展性太差!#90\n\t\t\t// switch (arguments.length) {\n\t\t\t// \tcase 1:\n\t\t\t// \t\t// pick( [ item1, item2 ... ] )\n\t\t\t// \t\treturn arr[this.natural(0, arr.length - 1)]\n\t\t\t// \tcase 2:\n\t\t\t// \t\t// pick( [ item1, item2 ... ], count )\n\t\t\t// \t\tmax = min\n\t\t\t// \t\t\t/* falls through */\n\t\t\t// \tcase 3:\n\t\t\t// \t\t// pick( [ item1, item2 ... ], min, max )\n\t\t\t// \t\treturn this.shuffle(arr, min, max)\n\t\t\t// }\n\t\t},\n\t\t/*\n\t\t 打乱数组中元素的顺序,并返回。\n\t\t Given an array, scramble the order and return it.\n\n\t\t 其他的实现思路:\n\t\t // https://code.google.com/p/jslibs/wiki/JavascriptTips\n\t\t result = result.sort(function() {\n\t\t return Math.random() - 0.5\n\t\t })\n\t\t*/\n\t\tshuffle: function shuffle(arr, min, max) {\n\t\t\tarr = arr || []\n\t\t\tvar old = arr.slice(0),\n\t\t\t\tresult = [],\n\t\t\t\tindex = 0,\n\t\t\t\tlength = old.length;\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tindex = this.natural(0, old.length - 1)\n\t\t\t\tresult.push(old[index])\n\t\t\t\told.splice(index, 1)\n\t\t\t}\n\t\t\tswitch (arguments.length) {\n\t\t\t\tcase 0:\n\t\t\t\tcase 1:\n\t\t\t\t\treturn result\n\t\t\t\tcase 2:\n\t\t\t\t\tmax = min\n\t\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tmin = parseInt(min, 10)\n\t\t\t\t\tmax = parseInt(max, 10)\n\t\t\t\t\treturn result.slice(0, this.natural(min, max))\n\t\t\t}\n\t\t},\n\t\t/*\n\t\t * Random.order(item, item)\n\t\t * Random.order([item, item ...])\n\n\t\t 顺序获取数组中的元素\n\n\t\t [JSON导入数组支持数组数据录入](https://github.com/thx/RAP/issues/22)\n\n\t\t 不支持单独调用!\n\t\t*/\n\t\torder: function order(array) {\n\t\t\torder.cache = order.cache || {}\n\n\t\t\tif (arguments.length > 1) array = [].slice.call(arguments, 0)\n\n\t\t\t// options.context.path/templatePath\n\t\t\tvar options = order.options\n\t\t\tvar templatePath = options.context.templatePath.join('.')\n\n\t\t\tvar cache = (\n\t\t\t\torder.cache[templatePath] = order.cache[templatePath] || {\n\t\t\t\t\tindex: 0,\n\t\t\t\t\tarray: array\n\t\t\t\t}\n\t\t\t)\n\n\t\t\treturn cache.array[cache.index++ % cache.array.length]\n\t\t}\n\t}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Name\n\n\t [Beyond the Top 1000 Names](http://www.ssa.gov/oact/babynames/limits.html)\n\t*/\n\tmodule.exports = {\n\t\t// 随机生成一个常见的英文名。\n\t\tfirst: function() {\n\t\t\tvar names = [\n\t\t\t\t// male\n\t\t\t\t\"James\", \"John\", \"Robert\", \"Michael\", \"William\",\n\t\t\t\t\"David\", \"Richard\", \"Charles\", \"Joseph\", \"Thomas\",\n\t\t\t\t\"Christopher\", \"Daniel\", \"Paul\", \"Mark\", \"Donald\",\n\t\t\t\t\"George\", \"Kenneth\", \"Steven\", \"Edward\", \"Brian\",\n\t\t\t\t\"Ronald\", \"Anthony\", \"Kevin\", \"Jason\", \"Matthew\",\n\t\t\t\t\"Gary\", \"Timothy\", \"Jose\", \"Larry\", \"Jeffrey\",\n\t\t\t\t\"Frank\", \"Scott\", \"Eric\"\n\t\t\t].concat([\n\t\t\t\t// female\n\t\t\t\t\"Mary\", \"Patricia\", \"Linda\", \"Barbara\", \"Elizabeth\",\n\t\t\t\t\"Jennifer\", \"Maria\", \"Susan\", \"Margaret\", \"Dorothy\",\n\t\t\t\t\"Lisa\", \"Nancy\", \"Karen\", \"Betty\", \"Helen\",\n\t\t\t\t\"Sandra\", \"Donna\", \"Carol\", \"Ruth\", \"Sharon\",\n\t\t\t\t\"Michelle\", \"Laura\", \"Sarah\", \"Kimberly\", \"Deborah\",\n\t\t\t\t\"Jessica\", \"Shirley\", \"Cynthia\", \"Angela\", \"Melissa\",\n\t\t\t\t\"Brenda\", \"Amy\", \"Anna\"\n\t\t\t])\n\t\t\treturn this.pick(names)\n\t\t\t\t// or this.capitalize(this.word())\n\t\t},\n\t\t// 随机生成一个常见的英文姓。\n\t\tlast: function() {\n\t\t\tvar names = [\n\t\t\t\t\"Smith\", \"Johnson\", \"Williams\", \"Brown\", \"Jones\",\n\t\t\t\t\"Miller\", \"Davis\", \"Garcia\", \"Rodriguez\", \"Wilson\",\n\t\t\t\t\"Martinez\", \"Anderson\", \"Taylor\", \"Thomas\", \"Hernandez\",\n\t\t\t\t\"Moore\", \"Martin\", \"Jackson\", \"Thompson\", \"White\",\n\t\t\t\t\"Lopez\", \"Lee\", \"Gonzalez\", \"Harris\", \"Clark\",\n\t\t\t\t\"Lewis\", \"Robinson\", \"Walker\", \"Perez\", \"Hall\",\n\t\t\t\t\"Young\", \"Allen\"\n\t\t\t]\n\t\t\treturn this.pick(names)\n\t\t\t\t// or this.capitalize(this.word())\n\t\t},\n\t\t// 随机生成一个常见的英文姓名。\n\t\tname: function(middle) {\n\t\t\treturn this.first() + ' ' +\n\t\t\t\t(middle ? this.first() + ' ' : '') +\n\t\t\t\tthis.last()\n\t\t},\n\t\t/*\n\t\t 随机生成一个常见的中文姓。\n\t\t [世界常用姓氏排行](http://baike.baidu.com/view/1719115.htm)\n\t\t [玄派网 - 网络小说创作辅助平台](http://xuanpai.sinaapp.com/)\n\t\t */\n\t\tcfirst: function() {\n\t\t\tvar names = (\n\t\t\t\t'王 李 张 刘 陈 杨 赵 黄 周 吴 ' +\n\t\t\t\t'徐 孙 胡 朱 高 林 何 郭 马 罗 ' +\n\t\t\t\t'梁 宋 郑 谢 韩 唐 冯 于 董 萧 ' +\n\t\t\t\t'程 曹 袁 邓 许 傅 沈 曾 彭 吕 ' +\n\t\t\t\t'苏 卢 蒋 蔡 贾 丁 魏 薛 叶 阎 ' +\n\t\t\t\t'余 潘 杜 戴 夏 锺 汪 田 任 姜 ' +\n\t\t\t\t'范 方 石 姚 谭 廖 邹 熊 金 陆 ' +\n\t\t\t\t'郝 孔 白 崔 康 毛 邱 秦 江 史 ' +\n\t\t\t\t'顾 侯 邵 孟 龙 万 段 雷 钱 汤 ' +\n\t\t\t\t'尹 黎 易 常 武 乔 贺 赖 龚 文'\n\t\t\t).split(' ')\n\t\t\treturn this.pick(names)\n\t\t},\n\t\t/*\n\t\t 随机生成一个常见的中文名。\n\t\t [中国最常见名字前50名_三九算命网](http://www.name999.net/xingming/xingshi/20131004/48.html)\n\t\t */\n\t\tclast: function() {\n\t\t\tvar names = (\n\t\t\t\t'伟 芳 娜 秀英 敏 静 丽 强 磊 军 ' +\n\t\t\t\t'洋 勇 艳 杰 娟 涛 明 超 秀兰 霞 ' +\n\t\t\t\t'平 刚 桂英'\n\t\t\t).split(' ')\n\t\t\treturn this.pick(names)\n\t\t},\n\t\t// 随机生成一个常见的中文姓名。\n\t\tcname: function() {\n\t\t\treturn this.cfirst() + this.clast()\n\t\t}\n\t}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Web\n\t*/\n\tmodule.exports = {\n\t /*\n\t 随机生成一个 URL。\n\n\t [URL 规范](http://www.w3.org/Addressing/URL/url-spec.txt)\n\t http Hypertext Transfer Protocol \n\t ftp File Transfer protocol \n\t gopher The Gopher protocol \n\t mailto Electronic mail address \n\t mid Message identifiers for electronic mail \n\t cid Content identifiers for MIME body part \n\t news Usenet news \n\t nntp Usenet news for local NNTP access only \n\t prospero Access using the prospero protocols \n\t telnet rlogin tn3270 Reference to interactive sessions\n\t wais Wide Area Information Servers \n\t */\n\t url: function(protocol, host) {\n\t return (protocol || this.protocol()) + '://' + // protocol?\n\t (host || this.domain()) + // host?\n\t '/' + this.word()\n\t },\n\t // 随机生成一个 URL 协议。\n\t protocol: function() {\n\t return this.pick(\n\t // 协议簇\n\t 'http ftp gopher mailto mid cid news nntp prospero telnet rlogin tn3270 wais'.split(' ')\n\t )\n\t },\n\t // 随机生成一个域名。\n\t domain: function(tld) {\n\t return this.word() + '.' + (tld || this.tld())\n\t },\n\t /*\n\t 随机生成一个顶级域名。\n\t 国际顶级域名 international top-level domain-names, iTLDs\n\t 国家顶级域名 national top-level domainnames, nTLDs\n\t [域名后缀大全](http://www.163ns.com/zixun/post/4417.html)\n\t */\n\t tld: function() { // Top Level Domain\n\t return this.pick(\n\t (\n\t // 域名后缀\n\t 'com net org edu gov int mil cn ' +\n\t // 国内域名\n\t 'com.cn net.cn gov.cn org.cn ' +\n\t // 中文国内域名\n\t '中国 中国互联.公司 中国互联.网络 ' +\n\t // 新国际域名\n\t 'tel biz cc tv info name hk mobi asia cd travel pro museum coop aero ' +\n\t // 世界各国域名后缀\n\t 'ad ae af ag ai al am an ao aq ar as at au aw az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cf cg ch ci ck cl cm cn co cq cr cu cv cx cy cz de dj dk dm do dz ec ee eg eh es et ev fi fj fk fm fo fr ga gb gd ge gf gh gi gl gm gn gp gr gt gu gw gy hk hm hn hr ht hu id ie il in io iq ir is it jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md mg mh ml mm mn mo mp mq mr ms mt mv mw mx my mz na nc ne nf ng ni nl no np nr nt nu nz om qa pa pe pf pg ph pk pl pm pn pr pt pw py re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr st su sy sz tc td tf tg th tj tk tm tn to tp tr tt tv tw tz ua ug uk us uy va vc ve vg vn vu wf ws ye yu za zm zr zw'\n\t ).split(' ')\n\t )\n\t },\n\t // 随机生成一个邮件地址。\n\t email: function(domain) {\n\t return this.character('lower') + '.' + this.word() + '@' +\n\t (\n\t domain ||\n\t (this.word() + '.' + this.tld())\n\t )\n\t // return this.character('lower') + '.' + this.last().toLowerCase() + '@' + this.last().toLowerCase() + '.' + this.tld()\n\t // return this.word() + '@' + (domain || this.domain())\n\t },\n\t // 随机生成一个 IP 地址。\n\t ip: function() {\n\t return this.natural(0, 255) + '.' +\n\t this.natural(0, 255) + '.' +\n\t this.natural(0, 255) + '.' +\n\t this.natural(0, 255)\n\t }\n\t}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Address\n\t*/\n\n\tvar DICT = __webpack_require__(18)\n\tvar REGION = ['东北', '华北', '华东', '华中', '华南', '西南', '西北']\n\n\tmodule.exports = {\n\t // 随机生成一个大区。\n\t region: function() {\n\t return this.pick(REGION)\n\t },\n\t // 随机生成一个(中国)省(或直辖市、自治区、特别行政区)。\n\t province: function() {\n\t return this.pick(DICT).name\n\t },\n\t // 随机生成一个(中国)市。\n\t city: function(prefix) {\n\t var province = this.pick(DICT)\n\t var city = this.pick(province.children)\n\t return prefix ? [province.name, city.name].join(' ') : city.name\n\t },\n\t // 随机生成一个(中国)县。\n\t county: function(prefix) {\n\t var province = this.pick(DICT)\n\t var city = this.pick(province.children)\n\t var county = this.pick(city.children) || {\n\t name: '-'\n\t }\n\t return prefix ? [province.name, city.name, county.name].join(' ') : county.name\n\t },\n\t // 随机生成一个邮政编码(六位数字)。\n\t zip: function(len) {\n\t var zip = ''\n\t for (var i = 0; i < (len || 6); i++) zip += this.natural(0, 9)\n\t return zip\n\t }\n\n\t // address: function() {},\n\t // phone: function() {},\n\t // areacode: function() {},\n\t // street: function() {},\n\t // street_suffixes: function() {},\n\t // street_suffix: function() {},\n\t // states: function() {},\n\t // state: function() {},\n\t}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n\t/*\n\t ## Address 字典数据\n\n\t 字典数据来源 http://www.atatech.org/articles/30028?rnd=254259856\n\n\t 国标 省(市)级行政区划码表\n\n\t 华北 北京市 天津市 河北省 山西省 内蒙古自治区\n\t 东北 辽宁省 吉林省 黑龙江省\n\t 华东 上海市 江苏省 浙江省 安徽省 福建省 江西省 山东省\n\t 华南 广东省 广西壮族自治区 海南省\n\t 华中 河南省 湖北省 湖南省\n\t 西南 重庆市 四川省 贵州省 云南省 西藏自治区\n\t 西北 陕西省 甘肃省 青海省 宁夏回族自治区 新疆维吾尔自治区\n\t 港澳台 香港特别行政区 澳门特别行政区 台湾省\n\t \n\t **排序**\n\t \n\t ```js\n\t var map = {}\n\t _.each(_.keys(REGIONS),function(id){\n\t map[id] = REGIONS[ID]\n\t })\n\t JSON.stringify(map)\n\t ```\n\t*/\n\tvar DICT = {\n\t \"110000\": \"北京\",\n\t \"110100\": \"北京市\",\n\t \"110101\": \"东城区\",\n\t \"110102\": \"西城区\",\n\t \"110105\": \"朝阳区\",\n\t \"110106\": \"丰台区\",\n\t \"110107\": \"石景山区\",\n\t \"110108\": \"海淀区\",\n\t \"110109\": \"门头沟区\",\n\t \"110111\": \"房山区\",\n\t \"110112\": \"通州区\",\n\t \"110113\": \"顺义区\",\n\t \"110114\": \"昌平区\",\n\t \"110115\": \"大兴区\",\n\t \"110116\": \"怀柔区\",\n\t \"110117\": \"平谷区\",\n\t \"110228\": \"密云县\",\n\t \"110229\": \"延庆县\",\n\t \"110230\": \"其它区\",\n\t \"120000\": \"天津\",\n\t \"120100\": \"天津市\",\n\t \"120101\": \"和平区\",\n\t \"120102\": \"河东区\",\n\t \"120103\": \"河西区\",\n\t \"120104\": \"南开区\",\n\t \"120105\": \"河北区\",\n\t \"120106\": \"红桥区\",\n\t \"120110\": \"东丽区\",\n\t \"120111\": \"西青区\",\n\t \"120112\": \"津南区\",\n\t \"120113\": \"北辰区\",\n\t \"120114\": \"武清区\",\n\t \"120115\": \"宝坻区\",\n\t \"120116\": \"滨海新区\",\n\t \"120221\": \"宁河县\",\n\t \"120223\": \"静海县\",\n\t \"120225\": \"蓟县\",\n\t \"120226\": \"其它区\",\n\t \"130000\": \"河北省\",\n\t \"130100\": \"石家庄市\",\n\t \"130102\": \"长安区\",\n\t \"130103\": \"桥东区\",\n\t \"130104\": \"桥西区\",\n\t \"130105\": \"新华区\",\n\t \"130107\": \"井陉矿区\",\n\t \"130108\": \"裕华区\",\n\t \"130121\": \"井陉县\",\n\t \"130123\": \"正定县\",\n\t \"130124\": \"栾城县\",\n\t \"130125\": \"行唐县\",\n\t \"130126\": \"灵寿县\",\n\t \"130127\": \"高邑县\",\n\t \"130128\": \"深泽县\",\n\t \"130129\": \"赞皇县\",\n\t \"130130\": \"无极县\",\n\t \"130131\": \"平山县\",\n\t \"130132\": \"元氏县\",\n\t \"130133\": \"赵县\",\n\t \"130181\": \"辛集市\",\n\t \"130182\": \"藁城市\",\n\t \"130183\": \"晋州市\",\n\t \"130184\": \"新乐市\",\n\t \"130185\": \"鹿泉市\",\n\t \"130186\": \"其它区\",\n\t \"130200\": \"唐山市\",\n\t \"130202\": \"路南区\",\n\t \"130203\": \"路北区\",\n\t \"130204\": \"古冶区\",\n\t \"130205\": \"开平区\",\n\t \"130207\": \"丰南区\",\n\t \"130208\": \"丰润区\",\n\t \"130223\": \"滦县\",\n\t \"130224\": \"滦南县\",\n\t \"130225\": \"乐亭县\",\n\t \"130227\": \"迁西县\",\n\t \"130229\": \"玉田县\",\n\t \"130230\": \"曹妃甸区\",\n\t \"130281\": \"遵化市\",\n\t \"130283\": \"迁安市\",\n\t \"130284\": \"其它区\",\n\t \"130300\": \"秦皇岛市\",\n\t \"130302\": \"海港区\",\n\t \"130303\": \"山海关区\",\n\t \"130304\": \"北戴河区\",\n\t \"130321\": \"青龙满族自治县\",\n\t \"130322\": \"昌黎县\",\n\t \"130323\": \"抚宁县\",\n\t \"130324\": \"卢龙县\",\n\t \"130398\": \"其它区\",\n\t \"130400\": \"邯郸市\",\n\t \"130402\": \"邯山区\",\n\t \"130403\": \"丛台区\",\n\t \"130404\": \"复兴区\",\n\t \"130406\": \"峰峰矿区\",\n\t \"130421\": \"邯郸县\",\n\t \"130423\": \"临漳县\",\n\t \"130424\": \"成安县\",\n\t \"130425\": \"大名县\",\n\t \"130426\": \"涉县\",\n\t \"130427\": \"磁县\",\n\t \"130428\": \"肥乡县\",\n\t \"130429\": \"永年县\",\n\t \"130430\": \"邱县\",\n\t \"130431\": \"鸡泽县\",\n\t \"130432\": \"广平县\",\n\t \"130433\": \"馆陶县\",\n\t \"130434\": \"魏县\",\n\t \"130435\": \"曲周县\",\n\t \"130481\": \"武安市\",\n\t \"130482\": \"其它区\",\n\t \"130500\": \"邢台市\",\n\t \"130502\": \"桥东区\",\n\t \"130503\": \"桥西区\",\n\t \"130521\": \"邢台县\",\n\t \"130522\": \"临城县\",\n\t \"130523\": \"内丘县\",\n\t \"130524\": \"柏乡县\",\n\t \"130525\": \"隆尧县\",\n\t \"130526\": \"任县\",\n\t \"130527\": \"南和县\",\n\t \"130528\": \"宁晋县\",\n\t \"130529\": \"巨鹿县\",\n\t \"130530\": \"新河县\",\n\t \"130531\": \"广宗县\",\n\t \"130532\": \"平乡县\",\n\t \"130533\": \"威县\",\n\t \"130534\": \"清河县\",\n\t \"130535\": \"临西县\",\n\t \"130581\": \"南宫市\",\n\t \"130582\": \"沙河市\",\n\t \"130583\": \"其它区\",\n\t \"130600\": \"保定市\",\n\t \"130602\": \"新市区\",\n\t \"130603\": \"北市区\",\n\t \"130604\": \"南市区\",\n\t \"130621\": \"满城县\",\n\t \"130622\": \"清苑县\",\n\t \"130623\": \"涞水县\",\n\t \"130624\": \"阜平县\",\n\t \"130625\": \"徐水县\",\n\t \"130626\": \"定兴县\",\n\t \"130627\": \"唐县\",\n\t \"130628\": \"高阳县\",\n\t \"130629\": \"容城县\",\n\t \"130630\": \"涞源县\",\n\t \"130631\": \"望都县\",\n\t \"130632\": \"安新县\",\n\t \"130633\": \"易县\",\n\t \"130634\": \"曲阳县\",\n\t \"130635\": \"蠡县\",\n\t \"130636\": \"顺平县\",\n\t \"130637\": \"博野县\",\n\t \"130638\": \"雄县\",\n\t \"130681\": \"涿州市\",\n\t \"130682\": \"定州市\",\n\t \"130683\": \"安国市\",\n\t \"130684\": \"高碑店市\",\n\t \"130699\": \"其它区\",\n\t \"130700\": \"张家口市\",\n\t \"130702\": \"桥东区\",\n\t \"130703\": \"桥西区\",\n\t \"130705\": \"宣化区\",\n\t \"130706\": \"下花园区\",\n\t \"130721\": \"宣化县\",\n\t \"130722\": \"张北县\",\n\t \"130723\": \"康保县\",\n\t \"130724\": \"沽源县\",\n\t \"130725\": \"尚义县\",\n\t \"130726\": \"蔚县\",\n\t \"130727\": \"阳原县\",\n\t \"130728\": \"怀安县\",\n\t \"130729\": \"万全县\",\n\t \"130730\": \"怀来县\",\n\t \"130731\": \"涿鹿县\",\n\t \"130732\": \"赤城县\",\n\t \"130733\": \"崇礼县\",\n\t \"130734\": \"其它区\",\n\t \"130800\": \"承德市\",\n\t \"130802\": \"双桥区\",\n\t \"130803\": \"双滦区\",\n\t \"130804\": \"鹰手营子矿区\",\n\t \"130821\": \"承德县\",\n\t \"130822\": \"兴隆县\",\n\t \"130823\": \"平泉县\",\n\t \"130824\": \"滦平县\",\n\t \"130825\": \"隆化县\",\n\t \"130826\": \"丰宁满族自治县\",\n\t \"130827\": \"宽城满族自治县\",\n\t \"130828\": \"围场满族蒙古族自治县\",\n\t \"130829\": \"其它区\",\n\t \"130900\": \"沧州市\",\n\t \"130902\": \"新华区\",\n\t \"130903\": \"运河区\",\n\t \"130921\": \"沧县\",\n\t \"130922\": \"青县\",\n\t \"130923\": \"东光县\",\n\t \"130924\": \"海兴县\",\n\t \"130925\": \"盐山县\",\n\t \"130926\": \"肃宁县\",\n\t \"130927\": \"南皮县\",\n\t \"130928\": \"吴桥县\",\n\t \"130929\": \"献县\",\n\t \"130930\": \"孟村回族自治县\",\n\t \"130981\": \"泊头市\",\n\t \"130982\": \"任丘市\",\n\t \"130983\": \"黄骅市\",\n\t \"130984\": \"河间市\",\n\t \"130985\": \"其它区\",\n\t \"131000\": \"廊坊市\",\n\t \"131002\": \"安次区\",\n\t \"131003\": \"广阳区\",\n\t \"131022\": \"固安县\",\n\t \"131023\": \"永清县\",\n\t \"131024\": \"香河县\",\n\t \"131025\": \"大城县\",\n\t \"131026\": \"文安县\",\n\t \"131028\": \"大厂回族自治县\",\n\t \"131081\": \"霸州市\",\n\t \"131082\": \"三河市\",\n\t \"131083\": \"其它区\",\n\t \"131100\": \"衡水市\",\n\t \"131102\": \"桃城区\",\n\t \"131121\": \"枣强县\",\n\t \"131122\": \"武邑县\",\n\t \"131123\": \"武强县\",\n\t \"131124\": \"饶阳县\",\n\t \"131125\": \"安平县\",\n\t \"131126\": \"故城县\",\n\t \"131127\": \"景县\",\n\t \"131128\": \"阜城县\",\n\t \"131181\": \"冀州市\",\n\t \"131182\": \"深州市\",\n\t \"131183\": \"其它区\",\n\t \"140000\": \"山西省\",\n\t \"140100\": \"太原市\",\n\t \"140105\": \"小店区\",\n\t \"140106\": \"迎泽区\",\n\t \"140107\": \"杏花岭区\",\n\t \"140108\": \"尖草坪区\",\n\t \"140109\": \"万柏林区\",\n\t \"140110\": \"晋源区\",\n\t \"140121\": \"清徐县\",\n\t \"140122\": \"阳曲县\",\n\t \"140123\": \"娄烦县\",\n\t \"140181\": \"古交市\",\n\t \"140182\": \"其它区\",\n\t \"140200\": \"大同市\",\n\t \"140202\": \"城区\",\n\t \"140203\": \"矿区\",\n\t \"140211\": \"南郊区\",\n\t \"140212\": \"新荣区\",\n\t \"140221\": \"阳高县\",\n\t \"140222\": \"天镇县\",\n\t \"140223\": \"广灵县\",\n\t \"140224\": \"灵丘县\",\n\t \"140225\": \"浑源县\",\n\t \"140226\": \"左云县\",\n\t \"140227\": \"大同县\",\n\t \"140228\": \"其它区\",\n\t \"140300\": \"阳泉市\",\n\t \"140302\": \"城区\",\n\t \"140303\": \"矿区\",\n\t \"140311\": \"郊区\",\n\t \"140321\": \"平定县\",\n\t \"140322\": \"盂县\",\n\t \"140323\": \"其它区\",\n\t \"140400\": \"长治市\",\n\t \"140421\": \"长治县\",\n\t \"140423\": \"襄垣县\",\n\t \"140424\": \"屯留县\",\n\t \"140425\": \"平顺县\",\n\t \"140426\": \"黎城县\",\n\t \"140427\": \"壶关县\",\n\t \"140428\": \"长子县\",\n\t \"140429\": \"武乡县\",\n\t \"140430\": \"沁县\",\n\t \"140431\": \"沁源县\",\n\t \"140481\": \"潞城市\",\n\t \"140482\": \"城区\",\n\t \"140483\": \"郊区\",\n\t \"140485\": \"其它区\",\n\t \"140500\": \"晋城市\",\n\t \"140502\": \"城区\",\n\t \"140521\": \"沁水县\",\n\t \"140522\": \"阳城县\",\n\t \"140524\": \"陵川县\",\n\t \"140525\": \"泽州县\",\n\t \"140581\": \"高平市\",\n\t \"140582\": \"其它区\",\n\t \"140600\": \"朔州市\",\n\t \"140602\": \"朔城区\",\n\t \"140603\": \"平鲁区\",\n\t \"140621\": \"山阴县\",\n\t \"140622\": \"应县\",\n\t \"140623\": \"右玉县\",\n\t \"140624\": \"怀仁县\",\n\t \"140625\": \"其它区\",\n\t \"140700\": \"晋中市\",\n\t \"140702\": \"榆次区\",\n\t \"140721\": \"榆社县\",\n\t \"140722\": \"左权县\",\n\t \"140723\": \"和顺县\",\n\t \"140724\": \"昔阳县\",\n\t \"140725\": \"寿阳县\",\n\t \"140726\": \"太谷县\",\n\t \"140727\": \"祁县\",\n\t \"140728\": \"平遥县\",\n\t \"140729\": \"灵石县\",\n\t \"140781\": \"介休市\",\n\t \"140782\": \"其它区\",\n\t \"140800\": \"运城市\",\n\t \"140802\": \"盐湖区\",\n\t \"140821\": \"临猗县\",\n\t \"140822\": \"万荣县\",\n\t \"140823\": \"闻喜县\",\n\t \"140824\": \"稷山县\",\n\t \"140825\": \"新绛县\",\n\t \"140826\": \"绛县\",\n\t \"140827\": \"垣曲县\",\n\t \"140828\": \"夏县\",\n\t \"140829\": \"平陆县\",\n\t \"140830\": \"芮城县\",\n\t \"140881\": \"永济市\",\n\t \"140882\": \"河津市\",\n\t \"140883\": \"其它区\",\n\t \"140900\": \"忻州市\",\n\t \"140902\": \"忻府区\",\n\t \"140921\": \"定襄县\",\n\t \"140922\": \"五台县\",\n\t \"140923\": \"代县\",\n\t \"140924\": \"繁峙县\",\n\t \"140925\": \"宁武县\",\n\t \"140926\": \"静乐县\",\n\t \"140927\": \"神池县\",\n\t \"140928\": \"五寨县\",\n\t \"140929\": \"岢岚县\",\n\t \"140930\": \"河曲县\",\n\t \"140931\": \"保德县\",\n\t \"140932\": \"偏关县\",\n\t \"140981\": \"原平市\",\n\t \"140982\": \"其它区\",\n\t \"141000\": \"临汾市\",\n\t \"141002\": \"尧都区\",\n\t \"141021\": \"曲沃县\",\n\t \"141022\": \"翼城县\",\n\t \"141023\": \"襄汾县\",\n\t \"141024\": \"洪洞县\",\n\t \"141025\": \"古县\",\n\t \"141026\": \"安泽县\",\n\t \"141027\": \"浮山县\",\n\t \"141028\": \"吉县\",\n\t \"141029\": \"乡宁县\",\n\t \"141030\": \"大宁县\",\n\t \"141031\": \"隰县\",\n\t \"141032\": \"永和县\",\n\t \"141033\": \"蒲县\",\n\t \"141034\": \"汾西县\",\n\t \"141081\": \"侯马市\",\n\t \"141082\": \"霍州市\",\n\t \"141083\": \"其它区\",\n\t \"141100\": \"吕梁市\",\n\t \"141102\": \"离石区\",\n\t \"141121\": \"文水县\",\n\t \"141122\": \"交城县\",\n\t \"141123\": \"兴县\",\n\t \"141124\": \"临县\",\n\t \"141125\": \"柳林县\",\n\t \"141126\": \"石楼县\",\n\t \"141127\": \"岚县\",\n\t \"141128\": \"方山县\",\n\t \"141129\": \"中阳县\",\n\t \"141130\": \"交口县\",\n\t \"141181\": \"孝义市\",\n\t \"141182\": \"汾阳市\",\n\t \"141183\": \"其它区\",\n\t \"150000\": \"内蒙古自治区\",\n\t \"150100\": \"呼和浩特市\",\n\t \"150102\": \"新城区\",\n\t \"150103\": \"回民区\",\n\t \"150104\": \"玉泉区\",\n\t \"150105\": \"赛罕区\",\n\t \"150121\": \"土默特左旗\",\n\t \"150122\": \"托克托县\",\n\t \"150123\": \"和林格尔县\",\n\t \"150124\": \"清水河县\",\n\t \"150125\": \"武川县\",\n\t \"150126\": \"其它区\",\n\t \"150200\": \"包头市\",\n\t \"150202\": \"东河区\",\n\t \"150203\": \"昆都仑区\",\n\t \"150204\": \"青山区\",\n\t \"150205\": \"石拐区\",\n\t \"150206\": \"白云鄂博矿区\",\n\t \"150207\": \"九原区\",\n\t \"150221\": \"土默特右旗\",\n\t \"150222\": \"固阳县\",\n\t \"150223\": \"达尔罕茂明安联合旗\",\n\t \"150224\": \"其它区\",\n\t \"150300\": \"乌海市\",\n\t \"150302\": \"海勃湾区\",\n\t \"150303\": \"海南区\",\n\t \"150304\": \"乌达区\",\n\t \"150305\": \"其它区\",\n\t \"150400\": \"赤峰市\",\n\t \"150402\": \"红山区\",\n\t \"150403\": \"元宝山区\",\n\t \"150404\": \"松山区\",\n\t \"150421\": \"阿鲁科尔沁旗\",\n\t \"150422\": \"巴林左旗\",\n\t \"150423\": \"巴林右旗\",\n\t \"150424\": \"林西县\",\n\t \"150425\": \"克什克腾旗\",\n\t \"150426\": \"翁牛特旗\",\n\t \"150428\": \"喀喇沁旗\",\n\t \"150429\": \"宁城县\",\n\t \"150430\": \"敖汉旗\",\n\t \"150431\": \"其它区\",\n\t \"150500\": \"通辽市\",\n\t \"150502\": \"科尔沁区\",\n\t \"150521\": \"科尔沁左翼中旗\",\n\t \"150522\": \"科尔沁左翼后旗\",\n\t \"150523\": \"开鲁县\",\n\t \"150524\": \"库伦旗\",\n\t \"150525\": \"奈曼旗\",\n\t \"150526\": \"扎鲁特旗\",\n\t \"150581\": \"霍林郭勒市\",\n\t \"150582\": \"其它区\",\n\t \"150600\": \"鄂尔多斯市\",\n\t \"150602\": \"东胜区\",\n\t \"150621\": \"达拉特旗\",\n\t \"150622\": \"准格尔旗\",\n\t \"150623\": \"鄂托克前旗\",\n\t \"150624\": \"鄂托克旗\",\n\t \"150625\": \"杭锦旗\",\n\t \"150626\": \"乌审旗\",\n\t \"150627\": \"伊金霍洛旗\",\n\t \"150628\": \"其它区\",\n\t \"150700\": \"呼伦贝尔市\",\n\t \"150702\": \"海拉尔区\",\n\t \"150703\": \"扎赉诺尔区\",\n\t \"150721\": \"阿荣旗\",\n\t \"150722\": \"莫力达瓦达斡尔族自治旗\",\n\t \"150723\": \"鄂伦春自治旗\",\n\t \"150724\": \"鄂温克族自治旗\",\n\t \"150725\": \"陈巴尔虎旗\",\n\t \"150726\": \"新巴尔虎左旗\",\n\t \"150727\": \"新巴尔虎右旗\",\n\t \"150781\": \"满洲里市\",\n\t \"150782\": \"牙克石市\",\n\t \"150783\": \"扎兰屯市\",\n\t \"150784\": \"额尔古纳市\",\n\t \"150785\": \"根河市\",\n\t \"150786\": \"其它区\",\n\t \"150800\": \"巴彦淖尔市\",\n\t \"150802\": \"临河区\",\n\t \"150821\": \"五原县\",\n\t \"150822\": \"磴口县\",\n\t \"150823\": \"乌拉特前旗\",\n\t \"150824\": \"乌拉特中旗\",\n\t \"150825\": \"乌拉特后旗\",\n\t \"150826\": \"杭锦后旗\",\n\t \"150827\": \"其它区\",\n\t \"150900\": \"乌兰察布市\",\n\t \"150902\": \"集宁区\",\n\t \"150921\": \"卓资县\",\n\t \"150922\": \"化德县\",\n\t \"150923\": \"商都县\",\n\t \"150924\": \"兴和县\",\n\t \"150925\": \"凉城县\",\n\t \"150926\": \"察哈尔右翼前旗\",\n\t \"150927\": \"察哈尔右翼中旗\",\n\t \"150928\": \"察哈尔右翼后旗\",\n\t \"150929\": \"四子王旗\",\n\t \"150981\": \"丰镇市\",\n\t \"150982\": \"其它区\",\n\t \"152200\": \"兴安盟\",\n\t \"152201\": \"乌兰浩特市\",\n\t \"152202\": \"阿尔山市\",\n\t \"152221\": \"科尔沁右翼前旗\",\n\t \"152222\": \"科尔沁右翼中旗\",\n\t \"152223\": \"扎赉特旗\",\n\t \"152224\": \"突泉县\",\n\t \"152225\": \"其它区\",\n\t \"152500\": \"锡林郭勒盟\",\n\t \"152501\": \"二连浩特市\",\n\t \"152502\": \"锡林浩特市\",\n\t \"152522\": \"阿巴嘎旗\",\n\t \"152523\": \"苏尼特左旗\",\n\t \"152524\": \"苏尼特右旗\",\n\t \"152525\": \"东乌珠穆沁旗\",\n\t \"152526\": \"西乌珠穆沁旗\",\n\t \"152527\": \"太仆寺旗\",\n\t \"152528\": \"镶黄旗\",\n\t \"152529\": \"正镶白旗\",\n\t \"152530\": \"正蓝旗\",\n\t \"152531\": \"多伦县\",\n\t \"152532\": \"其它区\",\n\t \"152900\": \"阿拉善盟\",\n\t \"152921\": \"阿拉善左旗\",\n\t \"152922\": \"阿拉善右旗\",\n\t \"152923\": \"额济纳旗\",\n\t \"152924\": \"其它区\",\n\t \"210000\": \"辽宁省\",\n\t \"210100\": \"沈阳市\",\n\t \"210102\": \"和平区\",\n\t \"210103\": \"沈河区\",\n\t \"210104\": \"大东区\",\n\t \"210105\": \"皇姑区\",\n\t \"210106\": \"铁西区\",\n\t \"210111\": \"苏家屯区\",\n\t \"210112\": \"东陵区\",\n\t \"210113\": \"新城子区\",\n\t \"210114\": \"于洪区\",\n\t \"210122\": \"辽中县\",\n\t \"210123\": \"康平县\",\n\t \"210124\": \"法库县\",\n\t \"210181\": \"新民市\",\n\t \"210184\": \"沈北新区\",\n\t \"210185\": \"其它区\",\n\t \"210200\": \"大连市\",\n\t \"210202\": \"中山区\",\n\t \"210203\": \"西岗区\",\n\t \"210204\": \"沙河口区\",\n\t \"210211\": \"甘井子区\",\n\t \"210212\": \"旅顺口区\",\n\t \"210213\": \"金州区\",\n\t \"210224\": \"长海县\",\n\t \"210281\": \"瓦房店市\",\n\t \"210282\": \"普兰店市\",\n\t \"210283\": \"庄河市\",\n\t \"210298\": \"其它区\",\n\t \"210300\": \"鞍山市\",\n\t \"210302\": \"铁东区\",\n\t \"210303\": \"铁西区\",\n\t \"210304\": \"立山区\",\n\t \"210311\": \"千山区\",\n\t \"210321\": \"台安县\",\n\t \"210323\": \"岫岩满族自治县\",\n\t \"210381\": \"海城市\",\n\t \"210382\": \"其它区\",\n\t \"210400\": \"抚顺市\",\n\t \"210402\": \"新抚区\",\n\t \"210403\": \"东洲区\",\n\t \"210404\": \"望花区\",\n\t \"210411\": \"顺城区\",\n\t \"210421\": \"抚顺县\",\n\t \"210422\": \"新宾满族自治县\",\n\t \"210423\": \"清原满族自治县\",\n\t \"210424\": \"其它区\",\n\t \"210500\": \"本溪市\",\n\t \"210502\": \"平山区\",\n\t \"210503\": \"溪湖区\",\n\t \"210504\": \"明山区\",\n\t \"210505\": \"南芬区\",\n\t \"210521\": \"本溪满族自治县\",\n\t \"210522\": \"桓仁满族自治县\",\n\t \"210523\": \"其它区\",\n\t \"210600\": \"丹东市\",\n\t \"210602\": \"元宝区\",\n\t \"210603\": \"振兴区\",\n\t \"210604\": \"振安区\",\n\t \"210624\": \"宽甸满族自治县\",\n\t \"210681\": \"东港市\",\n\t \"210682\": \"凤城市\",\n\t \"210683\": \"其它区\",\n\t \"210700\": \"锦州市\",\n\t \"210702\": \"古塔区\",\n\t \"210703\": \"凌河区\",\n\t \"210711\": \"太和区\",\n\t \"210726\": \"黑山县\",\n\t \"210727\": \"义县\",\n\t \"210781\": \"凌海市\",\n\t \"210782\": \"北镇市\",\n\t \"210783\": \"其它区\",\n\t \"210800\": \"营口市\",\n\t \"210802\": \"站前区\",\n\t \"210803\": \"西市区\",\n\t \"210804\": \"鲅鱼圈区\",\n\t \"210811\": \"老边区\",\n\t \"210881\": \"盖州市\",\n\t \"210882\": \"大石桥市\",\n\t \"210883\": \"其它区\",\n\t \"210900\": \"阜新市\",\n\t \"210902\": \"海州区\",\n\t \"210903\": \"新邱区\",\n\t \"210904\": \"太平区\",\n\t \"210905\": \"清河门区\",\n\t \"210911\": \"细河区\",\n\t \"210921\": \"阜新蒙古族自治县\",\n\t \"210922\": \"彰武县\",\n\t \"210923\": \"其它区\",\n\t \"211000\": \"辽阳市\",\n\t \"211002\": \"白塔区\",\n\t \"211003\": \"文圣区\",\n\t \"211004\": \"宏伟区\",\n\t \"211005\": \"弓长岭区\",\n\t \"211011\": \"太子河区\",\n\t \"211021\": \"辽阳县\",\n\t \"211081\": \"灯塔市\",\n\t \"211082\": \"其它区\",\n\t \"211100\": \"盘锦市\",\n\t \"211102\": \"双台子区\",\n\t \"211103\": \"兴隆台区\",\n\t \"211121\": \"大洼县\",\n\t \"211122\": \"盘山县\",\n\t \"211123\": \"其它区\",\n\t \"211200\": \"铁岭市\",\n\t \"211202\": \"银州区\",\n\t \"211204\": \"清河区\",\n\t \"211221\": \"铁岭县\",\n\t \"211223\": \"西丰县\",\n\t \"211224\": \"昌图县\",\n\t \"211281\": \"调兵山市\",\n\t \"211282\": \"开原市\",\n\t \"211283\": \"其它区\",\n\t \"211300\": \"朝阳市\",\n\t \"211302\": \"双塔区\",\n\t \"211303\": \"龙城区\",\n\t \"211321\": \"朝阳县\",\n\t \"211322\": \"建平县\",\n\t \"211324\": \"喀喇沁左翼蒙古族自治县\",\n\t \"211381\": \"北票市\",\n\t \"211382\": \"凌源市\",\n\t \"211383\": \"其它区\",\n\t \"211400\": \"葫芦岛市\",\n\t \"211402\": \"连山区\",\n\t \"211403\": \"龙港区\",\n\t \"211404\": \"南票区\",\n\t \"211421\": \"绥中县\",\n\t \"211422\": \"建昌县\",\n\t \"211481\": \"兴城市\",\n\t \"211482\": \"其它区\",\n\t \"220000\": \"吉林省\",\n\t \"220100\": \"长春市\",\n\t \"220102\": \"南关区\",\n\t \"220103\": \"宽城区\",\n\t \"220104\": \"朝阳区\",\n\t \"220105\": \"二道区\",\n\t \"220106\": \"绿园区\",\n\t \"220112\": \"双阳区\",\n\t \"220122\": \"农安县\",\n\t \"220181\": \"九台市\",\n\t \"220182\": \"榆树市\",\n\t \"220183\": \"德惠市\",\n\t \"220188\": \"其它区\",\n\t \"220200\": \"吉林市\",\n\t \"220202\": \"昌邑区\",\n\t \"220203\": \"龙潭区\",\n\t \"220204\": \"船营区\",\n\t \"220211\": \"丰满区\",\n\t \"220221\": \"永吉县\",\n\t \"220281\": \"蛟河市\",\n\t \"220282\": \"桦甸市\",\n\t \"220283\": \"舒兰市\",\n\t \"220284\": \"磐石市\",\n\t \"220285\": \"其它区\",\n\t \"220300\": \"四平市\",\n\t \"220302\": \"铁西区\",\n\t \"220303\": \"铁东区\",\n\t \"220322\": \"梨树县\",\n\t \"220323\": \"伊通满族自治县\",\n\t \"220381\": \"公主岭市\",\n\t \"220382\": \"双辽市\",\n\t \"220383\": \"其它区\",\n\t \"220400\": \"辽源市\",\n\t \"220402\": \"龙山区\",\n\t \"220403\": \"西安区\",\n\t \"220421\": \"东丰县\",\n\t \"220422\": \"东辽县\",\n\t \"220423\": \"其它区\",\n\t \"220500\": \"通化市\",\n\t \"220502\": \"东昌区\",\n\t \"220503\": \"二道江区\",\n\t \"220521\": \"通化县\",\n\t \"220523\": \"辉南县\",\n\t \"220524\": \"柳河县\",\n\t \"220581\": \"梅河口市\",\n\t \"220582\": \"集安市\",\n\t \"220583\": \"其它区\",\n\t \"220600\": \"白山市\",\n\t \"220602\": \"浑江区\",\n\t \"220621\": \"抚松县\",\n\t \"220622\": \"靖宇县\",\n\t \"220623\": \"长白朝鲜族自治县\",\n\t \"220625\": \"江源区\",\n\t \"220681\": \"临江市\",\n\t \"220682\": \"其它区\",\n\t \"220700\": \"松原市\",\n\t \"220702\": \"宁江区\",\n\t \"220721\": \"前郭尔罗斯蒙古族自治县\",\n\t \"220722\": \"长岭县\",\n\t \"220723\": \"乾安县\",\n\t \"220724\": \"扶余市\",\n\t \"220725\": \"其它区\",\n\t \"220800\": \"白城市\",\n\t \"220802\": \"洮北区\",\n\t \"220821\": \"镇赉县\",\n\t \"220822\": \"通榆县\",\n\t \"220881\": \"洮南市\",\n\t \"220882\": \"大安市\",\n\t \"220883\": \"其它区\",\n\t \"222400\": \"延边朝鲜族自治州\",\n\t \"222401\": \"延吉市\",\n\t \"222402\": \"图们市\",\n\t \"222403\": \"敦化市\",\n\t \"222404\": \"珲春市\",\n\t \"222405\": \"龙井市\",\n\t \"222406\": \"和龙市\",\n\t \"222424\": \"汪清县\",\n\t \"222426\": \"安图县\",\n\t \"222427\": \"其它区\",\n\t \"230000\": \"黑龙江省\",\n\t \"230100\": \"哈尔滨市\",\n\t \"230102\": \"道里区\",\n\t \"230103\": \"南岗区\",\n\t \"230104\": \"道外区\",\n\t \"230106\": \"香坊区\",\n\t \"230108\": \"平房区\",\n\t \"230109\": \"松北区\",\n\t \"230111\": \"呼兰区\",\n\t \"230123\": \"依兰县\",\n\t \"230124\": \"方正县\",\n\t \"230125\": \"宾县\",\n\t \"230126\": \"巴彦县\",\n\t \"230127\": \"木兰县\",\n\t \"230128\": \"通河县\",\n\t \"230129\": \"延寿县\",\n\t \"230181\": \"阿城区\",\n\t \"230182\": \"双城市\",\n\t \"230183\": \"尚志市\",\n\t \"230184\": \"五常市\",\n\t \"230186\": \"其它区\",\n\t \"230200\": \"齐齐哈尔市\",\n\t \"230202\": \"龙沙区\",\n\t \"230203\": \"建华区\",\n\t \"230204\": \"铁锋区\",\n\t \"230205\": \"昂昂溪区\",\n\t \"230206\": \"富拉尔基区\",\n\t \"230207\": \"碾子山区\",\n\t \"230208\": \"梅里斯达斡尔族区\",\n\t \"230221\": \"龙江县\",\n\t \"230223\": \"依安县\",\n\t \"230224\": \"泰来县\",\n\t \"230225\": \"甘南县\",\n\t \"230227\": \"富裕县\",\n\t \"230229\": \"克山县\",\n\t \"230230\": \"克东县\",\n\t \"230231\": \"拜泉县\",\n\t \"230281\": \"讷河市\",\n\t \"230282\": \"其它区\",\n\t \"230300\": \"鸡西市\",\n\t \"230302\": \"鸡冠区\",\n\t \"230303\": \"恒山区\",\n\t \"230304\": \"滴道区\",\n\t \"230305\": \"梨树区\",\n\t \"230306\": \"城子河区\",\n\t \"230307\": \"麻山区\",\n\t \"230321\": \"鸡东县\",\n\t \"230381\": \"虎林市\",\n\t \"230382\": \"密山市\",\n\t \"230383\": \"其它区\",\n\t \"230400\": \"鹤岗市\",\n\t \"230402\": \"向阳区\",\n\t \"230403\": \"工农区\",\n\t \"230404\": \"南山区\",\n\t \"230405\": \"兴安区\",\n\t \"230406\": \"东山区\",\n\t \"230407\": \"兴山区\",\n\t \"230421\": \"萝北县\",\n\t \"230422\": \"绥滨县\",\n\t \"230423\": \"其它区\",\n\t \"230500\": \"双鸭山市\",\n\t \"230502\": \"尖山区\",\n\t \"230503\": \"岭东区\",\n\t \"230505\": \"四方台区\",\n\t \"230506\": \"宝山区\",\n\t \"230521\": \"集贤县\",\n\t \"230522\": \"友谊县\",\n\t \"230523\": \"宝清县\",\n\t \"230524\": \"饶河县\",\n\t \"230525\": \"其它区\",\n\t \"230600\": \"大庆市\",\n\t \"230602\": \"萨尔图区\",\n\t \"230603\": \"龙凤区\",\n\t \"230604\": \"让胡路区\",\n\t \"230605\": \"红岗区\",\n\t \"230606\": \"大同区\",\n\t \"230621\": \"肇州县\",\n\t \"230622\": \"肇源县\",\n\t \"230623\": \"林甸县\",\n\t \"230624\": \"杜尔伯特蒙古族自治县\",\n\t \"230625\": \"其它区\",\n\t \"230700\": \"伊春市\",\n\t \"230702\": \"伊春区\",\n\t \"230703\": \"南岔区\",\n\t \"230704\": \"友好区\",\n\t \"230705\": \"西林区\",\n\t \"230706\": \"翠峦区\",\n\t \"230707\": \"新青区\",\n\t \"230708\": \"美溪区\",\n\t \"230709\": \"金山屯区\",\n\t \"230710\": \"五营区\",\n\t \"230711\": \"乌马河区\",\n\t \"230712\": \"汤旺河区\",\n\t \"230713\": \"带岭区\",\n\t \"230714\": \"乌伊岭区\",\n\t \"230715\": \"红星区\",\n\t \"230716\": \"上甘岭区\",\n\t \"230722\": \"嘉荫县\",\n\t \"230781\": \"铁力市\",\n\t \"230782\": \"其它区\",\n\t \"230800\": \"佳木斯市\",\n\t \"230803\": \"向阳区\",\n\t \"230804\": \"前进区\",\n\t \"230805\": \"东风区\",\n\t \"230811\": \"郊区\",\n\t \"230822\": \"桦南县\",\n\t \"230826\": \"桦川县\",\n\t \"230828\": \"汤原县\",\n\t \"230833\": \"抚远县\",\n\t \"230881\": \"同江市\",\n\t \"230882\": \"富锦市\",\n\t \"230883\": \"其它区\",\n\t \"230900\": \"七台河市\",\n\t \"230902\": \"新兴区\",\n\t \"230903\": \"桃山区\",\n\t \"230904\": \"茄子河区\",\n\t \"230921\": \"勃利县\",\n\t \"230922\": \"其它区\",\n\t \"231000\": \"牡丹江市\",\n\t \"231002\": \"东安区\",\n\t \"231003\": \"阳明区\",\n\t \"231004\": \"爱民区\",\n\t \"231005\": \"西安区\",\n\t \"231024\": \"东宁县\",\n\t \"231025\": \"林口县\",\n\t \"231081\": \"绥芬河市\",\n\t \"231083\": \"海林市\",\n\t \"231084\": \"宁安市\",\n\t \"231085\": \"穆棱市\",\n\t \"231086\": \"其它区\",\n\t \"231100\": \"黑河市\",\n\t \"231102\": \"爱辉区\",\n\t \"231121\": \"嫩江县\",\n\t \"231123\": \"逊克县\",\n\t \"231124\": \"孙吴县\",\n\t \"231181\": \"北安市\",\n\t \"231182\": \"五大连池市\",\n\t \"231183\": \"其它区\",\n\t \"231200\": \"绥化市\",\n\t \"231202\": \"北林区\",\n\t \"231221\": \"望奎县\",\n\t \"231222\": \"兰西县\",\n\t \"231223\": \"青冈县\",\n\t \"231224\": \"庆安县\",\n\t \"231225\": \"明水县\",\n\t \"231226\": \"绥棱县\",\n\t \"231281\": \"安达市\",\n\t \"231282\": \"肇东市\",\n\t \"231283\": \"海伦市\",\n\t \"231284\": \"其它区\",\n\t \"232700\": \"大兴安岭地区\",\n\t \"232702\": \"松岭区\",\n\t \"232703\": \"新林区\",\n\t \"232704\": \"呼中区\",\n\t \"232721\": \"呼玛县\",\n\t \"232722\": \"塔河县\",\n\t \"232723\": \"漠河县\",\n\t \"232724\": \"加格达奇区\",\n\t \"232725\": \"其它区\",\n\t \"310000\": \"上海\",\n\t \"310100\": \"上海市\",\n\t \"310101\": \"黄浦区\",\n\t \"310104\": \"徐汇区\",\n\t \"310105\": \"长宁区\",\n\t \"310106\": \"静安区\",\n\t \"310107\": \"普陀区\",\n\t \"310108\": \"闸北区\",\n\t \"310109\": \"虹口区\",\n\t \"310110\": \"杨浦区\",\n\t \"310112\": \"闵行区\",\n\t \"310113\": \"宝山区\",\n\t \"310114\": \"嘉定区\",\n\t \"310115\": \"浦东新区\",\n\t \"310116\": \"金山区\",\n\t \"310117\": \"松江区\",\n\t \"310118\": \"青浦区\",\n\t \"310120\": \"奉贤区\",\n\t \"310230\": \"崇明县\",\n\t \"310231\": \"其它区\",\n\t \"320000\": \"江苏省\",\n\t \"320100\": \"南京市\",\n\t \"320102\": \"玄武区\",\n\t \"320104\": \"秦淮区\",\n\t \"320105\": \"建邺区\",\n\t \"320106\": \"鼓楼区\",\n\t \"320111\": \"浦口区\",\n\t \"320113\": \"栖霞区\",\n\t \"320114\": \"雨花台区\",\n\t \"320115\": \"江宁区\",\n\t \"320116\": \"六合区\",\n\t \"320124\": \"溧水区\",\n\t \"320125\": \"高淳区\",\n\t \"320126\": \"其它区\",\n\t \"320200\": \"无锡市\",\n\t \"320202\": \"崇安区\",\n\t \"320203\": \"南长区\",\n\t \"320204\": \"北塘区\",\n\t \"320205\": \"锡山区\",\n\t \"320206\": \"惠山区\",\n\t \"320211\": \"滨湖区\",\n\t \"320281\": \"江阴市\",\n\t \"320282\": \"宜兴市\",\n\t \"320297\": \"其它区\",\n\t \"320300\": \"徐州市\",\n\t \"320302\": \"鼓楼区\",\n\t \"320303\": \"云龙区\",\n\t \"320305\": \"贾汪区\",\n\t \"320311\": \"泉山区\",\n\t \"320321\": \"丰县\",\n\t \"320322\": \"沛县\",\n\t \"320323\": \"铜山区\",\n\t \"320324\": \"睢宁县\",\n\t \"320381\": \"新沂市\",\n\t \"320382\": \"邳州市\",\n\t \"320383\": \"其它区\",\n\t \"320400\": \"常州市\",\n\t \"320402\": \"天宁区\",\n\t \"320404\": \"钟楼区\",\n\t \"320405\": \"戚墅堰区\",\n\t \"320411\": \"新北区\",\n\t \"320412\": \"武进区\",\n\t \"320481\": \"溧阳市\",\n\t \"320482\": \"金坛市\",\n\t \"320483\": \"其它区\",\n\t \"320500\": \"苏州市\",\n\t \"320505\": \"虎丘区\",\n\t \"320506\": \"吴中区\",\n\t \"320507\": \"相城区\",\n\t \"320508\": \"姑苏区\",\n\t \"320581\": \"常熟市\",\n\t \"320582\": \"张家港市\",\n\t \"320583\": \"昆山市\",\n\t \"320584\": \"吴江区\",\n\t \"320585\": \"太仓市\",\n\t \"320596\": \"其它区\",\n\t \"320600\": \"南通市\",\n\t \"320602\": \"崇川区\",\n\t \"320611\": \"港闸区\",\n\t \"320612\": \"通州区\",\n\t \"320621\": \"海安县\",\n\t \"320623\": \"如东县\",\n\t \"320681\": \"启东市\",\n\t \"320682\": \"如皋市\",\n\t \"320684\": \"海门市\",\n\t \"320694\": \"其它区\",\n\t \"320700\": \"连云港市\",\n\t \"320703\": \"连云区\",\n\t \"320705\": \"新浦区\",\n\t \"320706\": \"海州区\",\n\t \"320721\": \"赣榆县\",\n\t \"320722\": \"东海县\",\n\t \"320723\": \"灌云县\",\n\t \"320724\": \"灌南县\",\n\t \"320725\": \"其它区\",\n\t \"320800\": \"淮安市\",\n\t \"320802\": \"清河区\",\n\t \"320803\": \"淮安区\",\n\t \"320804\": \"淮阴区\",\n\t \"320811\": \"清浦区\",\n\t \"320826\": \"涟水县\",\n\t \"320829\": \"洪泽县\",\n\t \"320830\": \"盱眙县\",\n\t \"320831\": \"金湖县\",\n\t \"320832\": \"其它区\",\n\t \"320900\": \"盐城市\",\n\t \"320902\": \"亭湖区\",\n\t \"320903\": \"盐都区\",\n\t \"320921\": \"响水县\",\n\t \"320922\": \"滨海县\",\n\t \"320923\": \"阜宁县\",\n\t \"320924\": \"射阳县\",\n\t \"320925\": \"建湖县\",\n\t \"320981\": \"东台市\",\n\t \"320982\": \"大丰市\",\n\t \"320983\": \"其它区\",\n\t \"321000\": \"扬州市\",\n\t \"321002\": \"广陵区\",\n\t \"321003\": \"邗江区\",\n\t \"321023\": \"宝应县\",\n\t \"321081\": \"仪征市\",\n\t \"321084\": \"高邮市\",\n\t \"321088\": \"江都区\",\n\t \"321093\": \"其它区\",\n\t \"321100\": \"镇江市\",\n\t \"321102\": \"京口区\",\n\t \"321111\": \"润州区\",\n\t \"321112\": \"丹徒区\",\n\t \"321181\": \"丹阳市\",\n\t \"321182\": \"扬中市\",\n\t \"321183\": \"句容市\",\n\t \"321184\": \"其它区\",\n\t \"321200\": \"泰州市\",\n\t \"321202\": \"海陵区\",\n\t \"321203\": \"高港区\",\n\t \"321281\": \"兴化市\",\n\t \"321282\": \"靖江市\",\n\t \"321283\": \"泰兴市\",\n\t \"321284\": \"姜堰区\",\n\t \"321285\": \"其它区\",\n\t \"321300\": \"宿迁市\",\n\t \"321302\": \"宿城区\",\n\t \"321311\": \"宿豫区\",\n\t \"321322\": \"沭阳县\",\n\t \"321323\": \"泗阳县\",\n\t \"321324\": \"泗洪县\",\n\t \"321325\": \"其它区\",\n\t \"330000\": \"浙江省\",\n\t \"330100\": \"杭州市\",\n\t \"330102\": \"上城区\",\n\t \"330103\": \"下城区\",\n\t \"330104\": \"江干区\",\n\t \"330105\": \"拱墅区\",\n\t \"330106\": \"西湖区\",\n\t \"330108\": \"滨江区\",\n\t \"330109\": \"萧山区\",\n\t \"330110\": \"余杭区\",\n\t \"330122\": \"桐庐县\",\n\t \"330127\": \"淳安县\",\n\t \"330182\": \"建德市\",\n\t \"330183\": \"富阳市\",\n\t \"330185\": \"临安市\",\n\t \"330186\": \"其它区\",\n\t \"330200\": \"宁波市\",\n\t \"330203\": \"海曙区\",\n\t \"330204\": \"江东区\",\n\t \"330205\": \"江北区\",\n\t \"330206\": \"北仑区\",\n\t \"330211\": \"镇海区\",\n\t \"330212\": \"鄞州区\",\n\t \"330225\": \"象山县\",\n\t \"330226\": \"宁海县\",\n\t \"330281\": \"余姚市\",\n\t \"330282\": \"慈溪市\",\n\t \"330283\": \"奉化市\",\n\t \"330284\": \"其它区\",\n\t \"330300\": \"温州市\",\n\t \"330302\": \"鹿城区\",\n\t \"330303\": \"龙湾区\",\n\t \"330304\": \"瓯海区\",\n\t \"330322\": \"洞头县\",\n\t \"330324\": \"永嘉县\",\n\t \"330326\": \"平阳县\",\n\t \"330327\": \"苍南县\",\n\t \"330328\": \"文成县\",\n\t \"330329\": \"泰顺县\",\n\t \"330381\": \"瑞安市\",\n\t \"330382\": \"乐清市\",\n\t \"330383\": \"其它区\",\n\t \"330400\": \"嘉兴市\",\n\t \"330402\": \"南湖区\",\n\t \"330411\": \"秀洲区\",\n\t \"330421\": \"嘉善县\",\n\t \"330424\": \"海盐县\",\n\t \"330481\": \"海宁市\",\n\t \"330482\": \"平湖市\",\n\t \"330483\": \"桐乡市\",\n\t \"330484\": \"其它区\",\n\t \"330500\": \"湖州市\",\n\t \"330502\": \"吴兴区\",\n\t \"330503\": \"南浔区\",\n\t \"330521\": \"德清县\",\n\t \"330522\": \"长兴县\",\n\t \"330523\": \"安吉县\",\n\t \"330524\": \"其它区\",\n\t \"330600\": \"绍兴市\",\n\t \"330602\": \"越城区\",\n\t \"330621\": \"绍兴县\",\n\t \"330624\": \"新昌县\",\n\t \"330681\": \"诸暨市\",\n\t \"330682\": \"上虞市\",\n\t \"330683\": \"嵊州市\",\n\t \"330684\": \"其它区\",\n\t \"330700\": \"金华市\",\n\t \"330702\": \"婺城区\",\n\t \"330703\": \"金东区\",\n\t \"330723\": \"武义县\",\n\t \"330726\": \"浦江县\",\n\t \"330727\": \"磐安县\",\n\t \"330781\": \"兰溪市\",\n\t \"330782\": \"义乌市\",\n\t \"330783\": \"东阳市\",\n\t \"330784\": \"永康市\",\n\t \"330785\": \"其它区\",\n\t \"330800\": \"衢州市\",\n\t \"330802\": \"柯城区\",\n\t \"330803\": \"衢江区\",\n\t \"330822\": \"常山县\",\n\t \"330824\": \"开化县\",\n\t \"330825\": \"龙游县\",\n\t \"330881\": \"江山市\",\n\t \"330882\": \"其它区\",\n\t \"330900\": \"舟山市\",\n\t \"330902\": \"定海区\",\n\t \"330903\": \"普陀区\",\n\t \"330921\": \"岱山县\",\n\t \"330922\": \"嵊泗县\",\n\t \"330923\": \"其它区\",\n\t \"331000\": \"台州市\",\n\t \"331002\": \"椒江区\",\n\t \"331003\": \"黄岩区\",\n\t \"331004\": \"路桥区\",\n\t \"331021\": \"玉环县\",\n\t \"331022\": \"三门县\",\n\t \"331023\": \"天台县\",\n\t \"331024\": \"仙居县\",\n\t \"331081\": \"温岭市\",\n\t \"331082\": \"临海市\",\n\t \"331083\": \"其它区\",\n\t \"331100\": \"丽水市\",\n\t \"331102\": \"莲都区\",\n\t \"331121\": \"青田县\",\n\t \"331122\": \"缙云县\",\n\t \"331123\": \"遂昌县\",\n\t \"331124\": \"松阳县\",\n\t \"331125\": \"云和县\",\n\t \"331126\": \"庆元县\",\n\t \"331127\": \"景宁畲族自治县\",\n\t \"331181\": \"龙泉市\",\n\t \"331182\": \"其它区\",\n\t \"340000\": \"安徽省\",\n\t \"340100\": \"合肥市\",\n\t \"340102\": \"瑶海区\",\n\t \"340103\": \"庐阳区\",\n\t \"340104\": \"蜀山区\",\n\t \"340111\": \"包河区\",\n\t \"340121\": \"长丰县\",\n\t \"340122\": \"肥东县\",\n\t \"340123\": \"肥西县\",\n\t \"340192\": \"其它区\",\n\t \"340200\": \"芜湖市\",\n\t \"340202\": \"镜湖区\",\n\t \"340203\": \"弋江区\",\n\t \"340207\": \"鸠江区\",\n\t \"340208\": \"三山区\",\n\t \"340221\": \"芜湖县\",\n\t \"340222\": \"繁昌县\",\n\t \"340223\": \"南陵县\",\n\t \"340224\": \"其它区\",\n\t \"340300\": \"蚌埠市\",\n\t \"340302\": \"龙子湖区\",\n\t \"340303\": \"蚌山区\",\n\t \"340304\": \"禹会区\",\n\t \"340311\": \"淮上区\",\n\t \"340321\": \"怀远县\",\n\t \"340322\": \"五河县\",\n\t \"340323\": \"固镇县\",\n\t \"340324\": \"其它区\",\n\t \"340400\": \"淮南市\",\n\t \"340402\": \"大通区\",\n\t \"340403\": \"田家庵区\",\n\t \"340404\": \"谢家集区\",\n\t \"340405\": \"八公山区\",\n\t \"340406\": \"潘集区\",\n\t \"340421\": \"凤台县\",\n\t \"340422\": \"其它区\",\n\t \"340500\": \"马鞍山市\",\n\t \"340503\": \"花山区\",\n\t \"340504\": \"雨山区\",\n\t \"340506\": \"博望区\",\n\t \"340521\": \"当涂县\",\n\t \"340522\": \"其它区\",\n\t \"340600\": \"淮北市\",\n\t \"340602\": \"杜集区\",\n\t \"340603\": \"相山区\",\n\t \"340604\": \"烈山区\",\n\t \"340621\": \"濉溪县\",\n\t \"340622\": \"其它区\",\n\t \"340700\": \"铜陵市\",\n\t \"340702\": \"铜官山区\",\n\t \"340703\": \"狮子山区\",\n\t \"340711\": \"郊区\",\n\t \"340721\": \"铜陵县\",\n\t \"340722\": \"其它区\",\n\t \"340800\": \"安庆市\",\n\t \"340802\": \"迎江区\",\n\t \"340803\": \"大观区\",\n\t \"340811\": \"宜秀区\",\n\t \"340822\": \"怀宁县\",\n\t \"340823\": \"枞阳县\",\n\t \"340824\": \"潜山县\",\n\t \"340825\": \"太湖县\",\n\t \"340826\": \"宿松县\",\n\t \"340827\": \"望江县\",\n\t \"340828\": \"岳西县\",\n\t \"340881\": \"桐城市\",\n\t \"340882\": \"其它区\",\n\t \"341000\": \"黄山市\",\n\t \"341002\": \"屯溪区\",\n\t \"341003\": \"黄山区\",\n\t \"341004\": \"徽州区\",\n\t \"341021\": \"歙县\",\n\t \"341022\": \"休宁县\",\n\t \"341023\": \"黟县\",\n\t \"341024\": \"祁门县\",\n\t \"341025\": \"其它区\",\n\t \"341100\": \"滁州市\",\n\t \"341102\": \"琅琊区\",\n\t \"341103\": \"南谯区\",\n\t \"341122\": \"来安县\",\n\t \"341124\": \"全椒县\",\n\t \"341125\": \"定远县\",\n\t \"341126\": \"凤阳县\",\n\t \"341181\": \"天长市\",\n\t \"341182\": \"明光市\",\n\t \"341183\": \"其它区\",\n\t \"341200\": \"阜阳市\",\n\t \"341202\": \"颍州区\",\n\t \"341203\": \"颍东区\",\n\t \"341204\": \"颍泉区\",\n\t \"341221\": \"临泉县\",\n\t \"341222\": \"太和县\",\n\t \"341225\": \"阜南县\",\n\t \"341226\": \"颍上县\",\n\t \"341282\": \"界首市\",\n\t \"341283\": \"其它区\",\n\t \"341300\": \"宿州市\",\n\t \"341302\": \"埇桥区\",\n\t \"341321\": \"砀山县\",\n\t \"341322\": \"萧县\",\n\t \"341323\": \"灵璧县\",\n\t \"341324\": \"泗县\",\n\t \"341325\": \"其它区\",\n\t \"341400\": \"巢湖市\",\n\t \"341421\": \"庐江县\",\n\t \"341422\": \"无为县\",\n\t \"341423\": \"含山县\",\n\t \"341424\": \"和县\",\n\t \"341500\": \"六安市\",\n\t \"341502\": \"金安区\",\n\t \"341503\": \"裕安区\",\n\t \"341521\": \"寿县\",\n\t \"341522\": \"霍邱县\",\n\t \"341523\": \"舒城县\",\n\t \"341524\": \"金寨县\",\n\t \"341525\": \"霍山县\",\n\t \"341526\": \"其它区\",\n\t \"341600\": \"亳州市\",\n\t \"341602\": \"谯城区\",\n\t \"341621\": \"涡阳县\",\n\t \"341622\": \"蒙城县\",\n\t \"341623\": \"利辛县\",\n\t \"341624\": \"其它区\",\n\t \"341700\": \"池州市\",\n\t \"341702\": \"贵池区\",\n\t \"341721\": \"东至县\",\n\t \"341722\": \"石台县\",\n\t \"341723\": \"青阳县\",\n\t \"341724\": \"其它区\",\n\t \"341800\": \"宣城市\",\n\t \"341802\": \"宣州区\",\n\t \"341821\": \"郎溪县\",\n\t \"341822\": \"广德县\",\n\t \"341823\": \"泾县\",\n\t \"341824\": \"绩溪县\",\n\t \"341825\": \"旌德县\",\n\t \"341881\": \"宁国市\",\n\t \"341882\": \"其它区\",\n\t \"350000\": \"福建省\",\n\t \"350100\": \"福州市\",\n\t \"350102\": \"鼓楼区\",\n\t \"350103\": \"台江区\",\n\t \"350104\": \"仓山区\",\n\t \"350105\": \"马尾区\",\n\t \"350111\": \"晋安区\",\n\t \"350121\": \"闽侯县\",\n\t \"350122\": \"连江县\",\n\t \"350123\": \"罗源县\",\n\t \"350124\": \"闽清县\",\n\t \"350125\": \"永泰县\",\n\t \"350128\": \"平潭县\",\n\t \"350181\": \"福清市\",\n\t \"350182\": \"长乐市\",\n\t \"350183\": \"其它区\",\n\t \"350200\": \"厦门市\",\n\t \"350203\": \"思明区\",\n\t \"350205\": \"海沧区\",\n\t \"350206\": \"湖里区\",\n\t \"350211\": \"集美区\",\n\t \"350212\": \"同安区\",\n\t \"350213\": \"翔安区\",\n\t \"350214\": \"其它区\",\n\t \"350300\": \"莆田市\",\n\t \"350302\": \"城厢区\",\n\t \"350303\": \"涵江区\",\n\t \"350304\": \"荔城区\",\n\t \"350305\": \"秀屿区\",\n\t \"350322\": \"仙游县\",\n\t \"350323\": \"其它区\",\n\t \"350400\": \"三明市\",\n\t \"350402\": \"梅列区\",\n\t \"350403\": \"三元区\",\n\t \"350421\": \"明溪县\",\n\t \"350423\": \"清流县\",\n\t \"350424\": \"宁化县\",\n\t \"350425\": \"大田县\",\n\t \"350426\": \"尤溪县\",\n\t \"350427\": \"沙县\",\n\t \"350428\": \"将乐县\",\n\t \"350429\": \"泰宁县\",\n\t \"350430\": \"建宁县\",\n\t \"350481\": \"永安市\",\n\t \"350482\": \"其它区\",\n\t \"350500\": \"泉州市\",\n\t \"350502\": \"鲤城区\",\n\t \"350503\": \"丰泽区\",\n\t \"350504\": \"洛江区\",\n\t \"350505\": \"泉港区\",\n\t \"350521\": \"惠安县\",\n\t \"350524\": \"安溪县\",\n\t \"350525\": \"永春县\",\n\t \"350526\": \"德化县\",\n\t \"350527\": \"金门县\",\n\t \"350581\": \"石狮市\",\n\t \"350582\": \"晋江市\",\n\t \"350583\": \"南安市\",\n\t \"350584\": \"其它区\",\n\t \"350600\": \"漳州市\",\n\t \"350602\": \"芗城区\",\n\t \"350603\": \"龙文区\",\n\t \"350622\": \"云霄县\",\n\t \"350623\": \"漳浦县\",\n\t \"350624\": \"诏安县\",\n\t \"350625\": \"长泰县\",\n\t \"350626\": \"东山县\",\n\t \"350627\": \"南靖县\",\n\t \"350628\": \"平和县\",\n\t \"350629\": \"华安县\",\n\t \"350681\": \"龙海市\",\n\t \"350682\": \"其它区\",\n\t \"350700\": \"南平市\",\n\t \"350702\": \"延平区\",\n\t \"350721\": \"顺昌县\",\n\t \"350722\": \"浦城县\",\n\t \"350723\": \"光泽县\",\n\t \"350724\": \"松溪县\",\n\t \"350725\": \"政和县\",\n\t \"350781\": \"邵武市\",\n\t \"350782\": \"武夷山市\",\n\t \"350783\": \"建瓯市\",\n\t \"350784\": \"建阳市\",\n\t \"350785\": \"其它区\",\n\t \"350800\": \"龙岩市\",\n\t \"350802\": \"新罗区\",\n\t \"350821\": \"长汀县\",\n\t \"350822\": \"永定县\",\n\t \"350823\": \"上杭县\",\n\t \"350824\": \"武平县\",\n\t \"350825\": \"连城县\",\n\t \"350881\": \"漳平市\",\n\t \"350882\": \"其它区\",\n\t \"350900\": \"宁德市\",\n\t \"350902\": \"蕉城区\",\n\t \"350921\": \"霞浦县\",\n\t \"350922\": \"古田县\",\n\t \"350923\": \"屏南县\",\n\t \"350924\": \"寿宁县\",\n\t \"350925\": \"周宁县\",\n\t \"350926\": \"柘荣县\",\n\t \"350981\": \"福安市\",\n\t \"350982\": \"福鼎市\",\n\t \"350983\": \"其它区\",\n\t \"360000\": \"江西省\",\n\t \"360100\": \"南昌市\",\n\t \"360102\": \"东湖区\",\n\t \"360103\": \"西湖区\",\n\t \"360104\": \"青云谱区\",\n\t \"360105\": \"湾里区\",\n\t \"360111\": \"青山湖区\",\n\t \"360121\": \"南昌县\",\n\t \"360122\": \"新建县\",\n\t \"360123\": \"安义县\",\n\t \"360124\": \"进贤县\",\n\t \"360128\": \"其它区\",\n\t \"360200\": \"景德镇市\",\n\t \"360202\": \"昌江区\",\n\t \"360203\": \"珠山区\",\n\t \"360222\": \"浮梁县\",\n\t \"360281\": \"乐平市\",\n\t \"360282\": \"其它区\",\n\t \"360300\": \"萍乡市\",\n\t \"360302\": \"安源区\",\n\t \"360313\": \"湘东区\",\n\t \"360321\": \"莲花县\",\n\t \"360322\": \"上栗县\",\n\t \"360323\": \"芦溪县\",\n\t \"360324\": \"其它区\",\n\t \"360400\": \"九江市\",\n\t \"360402\": \"庐山区\",\n\t \"360403\": \"浔阳区\",\n\t \"360421\": \"九江县\",\n\t \"360423\": \"武宁县\",\n\t \"360424\": \"修水县\",\n\t \"360425\": \"永修县\",\n\t \"360426\": \"德安县\",\n\t \"360427\": \"星子县\",\n\t \"360428\": \"都昌县\",\n\t \"360429\": \"湖口县\",\n\t \"360430\": \"彭泽县\",\n\t \"360481\": \"瑞昌市\",\n\t \"360482\": \"其它区\",\n\t \"360483\": \"共青城市\",\n\t \"360500\": \"新余市\",\n\t \"360502\": \"渝水区\",\n\t \"360521\": \"分宜县\",\n\t \"360522\": \"其它区\",\n\t \"360600\": \"鹰潭市\",\n\t \"360602\": \"月湖区\",\n\t \"360622\": \"余江县\",\n\t \"360681\": \"贵溪市\",\n\t \"360682\": \"其它区\",\n\t \"360700\": \"赣州市\",\n\t \"360702\": \"章贡区\",\n\t \"360721\": \"赣县\",\n\t \"360722\": \"信丰县\",\n\t \"360723\": \"大余县\",\n\t \"360724\": \"上犹县\",\n\t \"360725\": \"崇义县\",\n\t \"360726\": \"安远县\",\n\t \"360727\": \"龙南县\",\n\t \"360728\": \"定南县\",\n\t \"360729\": \"全南县\",\n\t \"360730\": \"宁都县\",\n\t \"360731\": \"于都县\",\n\t \"360732\": \"兴国县\",\n\t \"360733\": \"会昌县\",\n\t \"360734\": \"寻乌县\",\n\t \"360735\": \"石城县\",\n\t \"360781\": \"瑞金市\",\n\t \"360782\": \"南康市\",\n\t \"360783\": \"其它区\",\n\t \"360800\": \"吉安市\",\n\t \"360802\": \"吉州区\",\n\t \"360803\": \"青原区\",\n\t \"360821\": \"吉安县\",\n\t \"360822\": \"吉水县\",\n\t \"360823\": \"峡江县\",\n\t \"360824\": \"新干县\",\n\t \"360825\": \"永丰县\",\n\t \"360826\": \"泰和县\",\n\t \"360827\": \"遂川县\",\n\t \"360828\": \"万安县\",\n\t \"360829\": \"安福县\",\n\t \"360830\": \"永新县\",\n\t \"360881\": \"井冈山市\",\n\t \"360882\": \"其它区\",\n\t \"360900\": \"宜春市\",\n\t \"360902\": \"袁州区\",\n\t \"360921\": \"奉新县\",\n\t \"360922\": \"万载县\",\n\t \"360923\": \"上高县\",\n\t \"360924\": \"宜丰县\",\n\t \"360925\": \"靖安县\",\n\t \"360926\": \"铜鼓县\",\n\t \"360981\": \"丰城市\",\n\t \"360982\": \"樟树市\",\n\t \"360983\": \"高安市\",\n\t \"360984\": \"其它区\",\n\t \"361000\": \"抚州市\",\n\t \"361002\": \"临川区\",\n\t \"361021\": \"南城县\",\n\t \"361022\": \"黎川县\",\n\t \"361023\": \"南丰县\",\n\t \"361024\": \"崇仁县\",\n\t \"361025\": \"乐安县\",\n\t \"361026\": \"宜黄县\",\n\t \"361027\": \"金溪县\",\n\t \"361028\": \"资溪县\",\n\t \"361029\": \"东乡县\",\n\t \"361030\": \"广昌县\",\n\t \"361031\": \"其它区\",\n\t \"361100\": \"上饶市\",\n\t \"361102\": \"信州区\",\n\t \"361121\": \"上饶县\",\n\t \"361122\": \"广丰县\",\n\t \"361123\": \"玉山县\",\n\t \"361124\": \"铅山县\",\n\t \"361125\": \"横峰县\",\n\t \"361126\": \"弋阳县\",\n\t \"361127\": \"余干县\",\n\t \"361128\": \"鄱阳县\",\n\t \"361129\": \"万年县\",\n\t \"361130\": \"婺源县\",\n\t \"361181\": \"德兴市\",\n\t \"361182\": \"其它区\",\n\t \"370000\": \"山东省\",\n\t \"370100\": \"济南市\",\n\t \"370102\": \"历下区\",\n\t \"370103\": \"市中区\",\n\t \"370104\": \"槐荫区\",\n\t \"370105\": \"天桥区\",\n\t \"370112\": \"历城区\",\n\t \"370113\": \"长清区\",\n\t \"370124\": \"平阴县\",\n\t \"370125\": \"济阳县\",\n\t \"370126\": \"商河县\",\n\t \"370181\": \"章丘市\",\n\t \"370182\": \"其它区\",\n\t \"370200\": \"青岛市\",\n\t \"370202\": \"市南区\",\n\t \"370203\": \"市北区\",\n\t \"370211\": \"黄岛区\",\n\t \"370212\": \"崂山区\",\n\t \"370213\": \"李沧区\",\n\t \"370214\": \"城阳区\",\n\t \"370281\": \"胶州市\",\n\t \"370282\": \"即墨市\",\n\t \"370283\": \"平度市\",\n\t \"370285\": \"莱西市\",\n\t \"370286\": \"其它区\",\n\t \"370300\": \"淄博市\",\n\t \"370302\": \"淄川区\",\n\t \"370303\": \"张店区\",\n\t \"370304\": \"博山区\",\n\t \"370305\": \"临淄区\",\n\t \"370306\": \"周村区\",\n\t \"370321\": \"桓台县\",\n\t \"370322\": \"高青县\",\n\t \"370323\": \"沂源县\",\n\t \"370324\": \"其它区\",\n\t \"370400\": \"枣庄市\",\n\t \"370402\": \"市中区\",\n\t \"370403\": \"薛城区\",\n\t \"370404\": \"峄城区\",\n\t \"370405\": \"台儿庄区\",\n\t \"370406\": \"山亭区\",\n\t \"370481\": \"滕州市\",\n\t \"370482\": \"其它区\",\n\t \"370500\": \"东营市\",\n\t \"370502\": \"东营区\",\n\t \"370503\": \"河口区\",\n\t \"370521\": \"垦利县\",\n\t \"370522\": \"利津县\",\n\t \"370523\": \"广饶县\",\n\t \"370591\": \"其它区\",\n\t \"370600\": \"烟台市\",\n\t \"370602\": \"芝罘区\",\n\t \"370611\": \"福山区\",\n\t \"370612\": \"牟平区\",\n\t \"370613\": \"莱山区\",\n\t \"370634\": \"长岛县\",\n\t \"370681\": \"龙口市\",\n\t \"370682\": \"莱阳市\",\n\t \"370683\": \"莱州市\",\n\t \"370684\": \"蓬莱市\",\n\t \"370685\": \"招远市\",\n\t \"370686\": \"栖霞市\",\n\t \"370687\": \"海阳市\",\n\t \"370688\": \"其它区\",\n\t \"370700\": \"潍坊市\",\n\t \"370702\": \"潍城区\",\n\t \"370703\": \"寒亭区\",\n\t \"370704\": \"坊子区\",\n\t \"370705\": \"奎文区\",\n\t \"370724\": \"临朐县\",\n\t \"370725\": \"昌乐县\",\n\t \"370781\": \"青州市\",\n\t \"370782\": \"诸城市\",\n\t \"370783\": \"寿光市\",\n\t \"370784\": \"安丘市\",\n\t \"370785\": \"高密市\",\n\t \"370786\": \"昌邑市\",\n\t \"370787\": \"其它区\",\n\t \"370800\": \"济宁市\",\n\t \"370802\": \"市中区\",\n\t \"370811\": \"任城区\",\n\t \"370826\": \"微山县\",\n\t \"370827\": \"鱼台县\",\n\t \"370828\": \"金乡县\",\n\t \"370829\": \"嘉祥县\",\n\t \"370830\": \"汶上县\",\n\t \"370831\": \"泗水县\",\n\t \"370832\": \"梁山县\",\n\t \"370881\": \"曲阜市\",\n\t \"370882\": \"兖州市\",\n\t \"370883\": \"邹城市\",\n\t \"370884\": \"其它区\",\n\t \"370900\": \"泰安市\",\n\t \"370902\": \"泰山区\",\n\t \"370903\": \"岱岳区\",\n\t \"370921\": \"宁阳县\",\n\t \"370923\": \"东平县\",\n\t \"370982\": \"新泰市\",\n\t \"370983\": \"肥城市\",\n\t \"370984\": \"其它区\",\n\t \"371000\": \"威海市\",\n\t \"371002\": \"环翠区\",\n\t \"371081\": \"文登市\",\n\t \"371082\": \"荣成市\",\n\t \"371083\": \"乳山市\",\n\t \"371084\": \"其它区\",\n\t \"371100\": \"日照市\",\n\t \"371102\": \"东港区\",\n\t \"371103\": \"岚山区\",\n\t \"371121\": \"五莲县\",\n\t \"371122\": \"莒县\",\n\t \"371123\": \"其它区\",\n\t \"371200\": \"莱芜市\",\n\t \"371202\": \"莱城区\",\n\t \"371203\": \"钢城区\",\n\t \"371204\": \"其它区\",\n\t \"371300\": \"临沂市\",\n\t \"371302\": \"兰山区\",\n\t \"371311\": \"罗庄区\",\n\t \"371312\": \"河东区\",\n\t \"371321\": \"沂南县\",\n\t \"371322\": \"郯城县\",\n\t \"371323\": \"沂水县\",\n\t \"371324\": \"苍山县\",\n\t \"371325\": \"费县\",\n\t \"371326\": \"平邑县\",\n\t \"371327\": \"莒南县\",\n\t \"371328\": \"蒙阴县\",\n\t \"371329\": \"临沭县\",\n\t \"371330\": \"其它区\",\n\t \"371400\": \"德州市\",\n\t \"371402\": \"德城区\",\n\t \"371421\": \"陵县\",\n\t \"371422\": \"宁津县\",\n\t \"371423\": \"庆云县\",\n\t \"371424\": \"临邑县\",\n\t \"371425\": \"齐河县\",\n\t \"371426\": \"平原县\",\n\t \"371427\": \"夏津县\",\n\t \"371428\": \"武城县\",\n\t \"371481\": \"乐陵市\",\n\t \"371482\": \"禹城市\",\n\t \"371483\": \"其它区\",\n\t \"371500\": \"聊城市\",\n\t \"371502\": \"东昌府区\",\n\t \"371521\": \"阳谷县\",\n\t \"371522\": \"莘县\",\n\t \"371523\": \"茌平县\",\n\t \"371524\": \"东阿县\",\n\t \"371525\": \"冠县\",\n\t \"371526\": \"高唐县\",\n\t \"371581\": \"临清市\",\n\t \"371582\": \"其它区\",\n\t \"371600\": \"滨州市\",\n\t \"371602\": \"滨城区\",\n\t \"371621\": \"惠民县\",\n\t \"371622\": \"阳信县\",\n\t \"371623\": \"无棣县\",\n\t \"371624\": \"沾化县\",\n\t \"371625\": \"博兴县\",\n\t \"371626\": \"邹平县\",\n\t \"371627\": \"其它区\",\n\t \"371700\": \"菏泽市\",\n\t \"371702\": \"牡丹区\",\n\t \"371721\": \"曹县\",\n\t \"371722\": \"单县\",\n\t \"371723\": \"成武县\",\n\t \"371724\": \"巨野县\",\n\t \"371725\": \"郓城县\",\n\t \"371726\": \"鄄城县\",\n\t \"371727\": \"定陶县\",\n\t \"371728\": \"东明县\",\n\t \"371729\": \"其它区\",\n\t \"410000\": \"河南省\",\n\t \"410100\": \"郑州市\",\n\t \"410102\": \"中原区\",\n\t \"410103\": \"二七区\",\n\t \"410104\": \"管城回族区\",\n\t \"410105\": \"金水区\",\n\t \"410106\": \"上街区\",\n\t \"410108\": \"惠济区\",\n\t \"410122\": \"中牟县\",\n\t \"410181\": \"巩义市\",\n\t \"410182\": \"荥阳市\",\n\t \"410183\": \"新密市\",\n\t \"410184\": \"新郑市\",\n\t \"410185\": \"登封市\",\n\t \"410188\": \"其它区\",\n\t \"410200\": \"开封市\",\n\t \"410202\": \"龙亭区\",\n\t \"410203\": \"顺河回族区\",\n\t \"410204\": \"鼓楼区\",\n\t \"410205\": \"禹王台区\",\n\t \"410211\": \"金明区\",\n\t \"410221\": \"杞县\",\n\t \"410222\": \"通许县\",\n\t \"410223\": \"尉氏县\",\n\t \"410224\": \"开封县\",\n\t \"410225\": \"兰考县\",\n\t \"410226\": \"其它区\",\n\t \"410300\": \"洛阳市\",\n\t \"410302\": \"老城区\",\n\t \"410303\": \"西工区\",\n\t \"410304\": \"瀍河回族区\",\n\t \"410305\": \"涧西区\",\n\t \"410306\": \"吉利区\",\n\t \"410307\": \"洛龙区\",\n\t \"410322\": \"孟津县\",\n\t \"410323\": \"新安县\",\n\t \"410324\": \"栾川县\",\n\t \"410325\": \"嵩县\",\n\t \"410326\": \"汝阳县\",\n\t \"410327\": \"宜阳县\",\n\t \"410328\": \"洛宁县\",\n\t \"410329\": \"伊川县\",\n\t \"410381\": \"偃师市\",\n\t \"410400\": \"平顶山市\",\n\t \"410402\": \"新华区\",\n\t \"410403\": \"卫东区\",\n\t \"410404\": \"石龙区\",\n\t \"410411\": \"湛河区\",\n\t \"410421\": \"宝丰县\",\n\t \"410422\": \"叶县\",\n\t \"410423\": \"鲁山县\",\n\t \"410425\": \"郏县\",\n\t \"410481\": \"舞钢市\",\n\t \"410482\": \"汝州市\",\n\t \"410483\": \"其它区\",\n\t \"410500\": \"安阳市\",\n\t \"410502\": \"文峰区\",\n\t \"410503\": \"北关区\",\n\t \"410505\": \"殷都区\",\n\t \"410506\": \"龙安区\",\n\t \"410522\": \"安阳县\",\n\t \"410523\": \"汤阴县\",\n\t \"410526\": \"滑县\",\n\t \"410527\": \"内黄县\",\n\t \"410581\": \"林州市\",\n\t \"410582\": \"其它区\",\n\t \"410600\": \"鹤壁市\",\n\t \"410602\": \"鹤山区\",\n\t \"410603\": \"山城区\",\n\t \"410611\": \"淇滨区\",\n\t \"410621\": \"浚县\",\n\t \"410622\": \"淇县\",\n\t \"410623\": \"其它区\",\n\t \"410700\": \"新乡市\",\n\t \"410702\": \"红旗区\",\n\t \"410703\": \"卫滨区\",\n\t \"410704\": \"凤泉区\",\n\t \"410711\": \"牧野区\",\n\t \"410721\": \"新乡县\",\n\t \"410724\": \"获嘉县\",\n\t \"410725\": \"原阳县\",\n\t \"410726\": \"延津县\",\n\t \"410727\": \"封丘县\",\n\t \"410728\": \"长垣县\",\n\t \"410781\": \"卫辉市\",\n\t \"410782\": \"辉县市\",\n\t \"410783\": \"其它区\",\n\t \"410800\": \"焦作市\",\n\t \"410802\": \"解放区\",\n\t \"410803\": \"中站区\",\n\t \"410804\": \"马村区\",\n\t \"410811\": \"山阳区\",\n\t \"410821\": \"修武县\",\n\t \"410822\": \"博爱县\",\n\t \"410823\": \"武陟县\",\n\t \"410825\": \"温县\",\n\t \"410881\": \"济源市\",\n\t \"410882\": \"沁阳市\",\n\t \"410883\": \"孟州市\",\n\t \"410884\": \"其它区\",\n\t \"410900\": \"濮阳市\",\n\t \"410902\": \"华龙区\",\n\t \"410922\": \"清丰县\",\n\t \"410923\": \"南乐县\",\n\t \"410926\": \"范县\",\n\t \"410927\": \"台前县\",\n\t \"410928\": \"濮阳县\",\n\t \"410929\": \"其它区\",\n\t \"411000\": \"许昌市\",\n\t \"411002\": \"魏都区\",\n\t \"411023\": \"许昌县\",\n\t \"411024\": \"鄢陵县\",\n\t \"411025\": \"襄城县\",\n\t \"411081\": \"禹州市\",\n\t \"411082\": \"长葛市\",\n\t \"411083\": \"其它区\",\n\t \"411100\": \"漯河市\",\n\t \"411102\": \"源汇区\",\n\t \"411103\": \"郾城区\",\n\t \"411104\": \"召陵区\",\n\t \"411121\": \"舞阳县\",\n\t \"411122\": \"临颍县\",\n\t \"411123\": \"其它区\",\n\t \"411200\": \"三门峡市\",\n\t \"411202\": \"湖滨区\",\n\t \"411221\": \"渑池县\",\n\t \"411222\": \"陕县\",\n\t \"411224\": \"卢氏县\",\n\t \"411281\": \"义马市\",\n\t \"411282\": \"灵宝市\",\n\t \"411283\": \"其它区\",\n\t \"411300\": \"南阳市\",\n\t \"411302\": \"宛城区\",\n\t \"411303\": \"卧龙区\",\n\t \"411321\": \"南召县\",\n\t \"411322\": \"方城县\",\n\t \"411323\": \"西峡县\",\n\t \"411324\": \"镇平县\",\n\t \"411325\": \"内乡县\",\n\t \"411326\": \"淅川县\",\n\t \"411327\": \"社旗县\",\n\t \"411328\": \"唐河县\",\n\t \"411329\": \"新野县\",\n\t \"411330\": \"桐柏县\",\n\t \"411381\": \"邓州市\",\n\t \"411382\": \"其它区\",\n\t \"411400\": \"商丘市\",\n\t \"411402\": \"梁园区\",\n\t \"411403\": \"睢阳区\",\n\t \"411421\": \"民权县\",\n\t \"411422\": \"睢县\",\n\t \"411423\": \"宁陵县\",\n\t \"411424\": \"柘城县\",\n\t \"411425\": \"虞城县\",\n\t \"411426\": \"夏邑县\",\n\t \"411481\": \"永城市\",\n\t \"411482\": \"其它区\",\n\t \"411500\": \"信阳市\",\n\t \"411502\": \"浉河区\",\n\t \"411503\": \"平桥区\",\n\t \"411521\": \"罗山县\",\n\t \"411522\": \"光山县\",\n\t \"411523\": \"新县\",\n\t \"411524\": \"商城县\",\n\t \"411525\": \"固始县\",\n\t \"411526\": \"潢川县\",\n\t \"411527\": \"淮滨县\",\n\t \"411528\": \"息县\",\n\t \"411529\": \"其它区\",\n\t \"411600\": \"周口市\",\n\t \"411602\": \"川汇区\",\n\t \"411621\": \"扶沟县\",\n\t \"411622\": \"西华县\",\n\t \"411623\": \"商水县\",\n\t \"411624\": \"沈丘县\",\n\t \"411625\": \"郸城县\",\n\t \"411626\": \"淮阳县\",\n\t \"411627\": \"太康县\",\n\t \"411628\": \"鹿邑县\",\n\t \"411681\": \"项城市\",\n\t \"411682\": \"其它区\",\n\t \"411700\": \"驻马店市\",\n\t \"411702\": \"驿城区\",\n\t \"411721\": \"西平县\",\n\t \"411722\": \"上蔡县\",\n\t \"411723\": \"平舆县\",\n\t \"411724\": \"正阳县\",\n\t \"411725\": \"确山县\",\n\t \"411726\": \"泌阳县\",\n\t \"411727\": \"汝南县\",\n\t \"411728\": \"遂平县\",\n\t \"411729\": \"新蔡县\",\n\t \"411730\": \"其它区\",\n\t \"420000\": \"湖北省\",\n\t \"420100\": \"武汉市\",\n\t \"420102\": \"江岸区\",\n\t \"420103\": \"江汉区\",\n\t \"420104\": \"硚口区\",\n\t \"420105\": \"汉阳区\",\n\t \"420106\": \"武昌区\",\n\t \"420107\": \"青山区\",\n\t \"420111\": \"洪山区\",\n\t \"420112\": \"东西湖区\",\n\t \"420113\": \"汉南区\",\n\t \"420114\": \"蔡甸区\",\n\t \"420115\": \"江夏区\",\n\t \"420116\": \"黄陂区\",\n\t \"420117\": \"新洲区\",\n\t \"420118\": \"其它区\",\n\t \"420200\": \"黄石市\",\n\t \"420202\": \"黄石港区\",\n\t \"420203\": \"西塞山区\",\n\t \"420204\": \"下陆区\",\n\t \"420205\": \"铁山区\",\n\t \"420222\": \"阳新县\",\n\t \"420281\": \"大冶市\",\n\t \"420282\": \"其它区\",\n\t \"420300\": \"十堰市\",\n\t \"420302\": \"茅箭区\",\n\t \"420303\": \"张湾区\",\n\t \"420321\": \"郧县\",\n\t \"420322\": \"郧西县\",\n\t \"420323\": \"竹山县\",\n\t \"420324\": \"竹溪县\",\n\t \"420325\": \"房县\",\n\t \"420381\": \"丹江口市\",\n\t \"420383\": \"其它区\",\n\t \"420500\": \"宜昌市\",\n\t \"420502\": \"西陵区\",\n\t \"420503\": \"伍家岗区\",\n\t \"420504\": \"点军区\",\n\t \"420505\": \"猇亭区\",\n\t \"420506\": \"夷陵区\",\n\t \"420525\": \"远安县\",\n\t \"420526\": \"兴山县\",\n\t \"420527\": \"秭归县\",\n\t \"420528\": \"长阳土家族自治县\",\n\t \"420529\": \"五峰土家族自治县\",\n\t \"420581\": \"宜都市\",\n\t \"420582\": \"当阳市\",\n\t \"420583\": \"枝江市\",\n\t \"420584\": \"其它区\",\n\t \"420600\": \"襄阳市\",\n\t \"420602\": \"襄城区\",\n\t \"420606\": \"樊城区\",\n\t \"420607\": \"襄州区\",\n\t \"420624\": \"南漳县\",\n\t \"420625\": \"谷城县\",\n\t \"420626\": \"保康县\",\n\t \"420682\": \"老河口市\",\n\t \"420683\": \"枣阳市\",\n\t \"420684\": \"宜城市\",\n\t \"420685\": \"其它区\",\n\t \"420700\": \"鄂州市\",\n\t \"420702\": \"梁子湖区\",\n\t \"420703\": \"华容区\",\n\t \"420704\": \"鄂城区\",\n\t \"420705\": \"其它区\",\n\t \"420800\": \"荆门市\",\n\t \"420802\": \"东宝区\",\n\t \"420804\": \"掇刀区\",\n\t \"420821\": \"京山县\",\n\t \"420822\": \"沙洋县\",\n\t \"420881\": \"钟祥市\",\n\t \"420882\": \"其它区\",\n\t \"420900\": \"孝感市\",\n\t \"420902\": \"孝南区\",\n\t \"420921\": \"孝昌县\",\n\t \"420922\": \"大悟县\",\n\t \"420923\": \"云梦县\",\n\t \"420981\": \"应城市\",\n\t \"420982\": \"安陆市\",\n\t \"420984\": \"汉川市\",\n\t \"420985\": \"其它区\",\n\t \"421000\": \"荆州市\",\n\t \"421002\": \"沙市区\",\n\t \"421003\": \"荆州区\",\n\t \"421022\": \"公安县\",\n\t \"421023\": \"监利县\",\n\t \"421024\": \"江陵县\",\n\t \"421081\": \"石首市\",\n\t \"421083\": \"洪湖市\",\n\t \"421087\": \"松滋市\",\n\t \"421088\": \"其它区\",\n\t \"421100\": \"黄冈市\",\n\t \"421102\": \"黄州区\",\n\t \"421121\": \"团风县\",\n\t \"421122\": \"红安县\",\n\t \"421123\": \"罗田县\",\n\t \"421124\": \"英山县\",\n\t \"421125\": \"浠水县\",\n\t \"421126\": \"蕲春县\",\n\t \"421127\": \"黄梅县\",\n\t \"421181\": \"麻城市\",\n\t \"421182\": \"武穴市\",\n\t \"421183\": \"其它区\",\n\t \"421200\": \"咸宁市\",\n\t \"421202\": \"咸安区\",\n\t \"421221\": \"嘉鱼县\",\n\t \"421222\": \"通城县\",\n\t \"421223\": \"崇阳县\",\n\t \"421224\": \"通山县\",\n\t \"421281\": \"赤壁市\",\n\t \"421283\": \"其它区\",\n\t \"421300\": \"随州市\",\n\t \"421302\": \"曾都区\",\n\t \"421321\": \"随县\",\n\t \"421381\": \"广水市\",\n\t \"421382\": \"其它区\",\n\t \"422800\": \"恩施土家族苗族自治州\",\n\t \"422801\": \"恩施市\",\n\t \"422802\": \"利川市\",\n\t \"422822\": \"建始县\",\n\t \"422823\": \"巴东县\",\n\t \"422825\": \"宣恩县\",\n\t \"422826\": \"咸丰县\",\n\t \"422827\": \"来凤县\",\n\t \"422828\": \"鹤峰县\",\n\t \"422829\": \"其它区\",\n\t \"429004\": \"仙桃市\",\n\t \"429005\": \"潜江市\",\n\t \"429006\": \"天门市\",\n\t \"429021\": \"神农架林区\",\n\t \"430000\": \"湖南省\",\n\t \"430100\": \"长沙市\",\n\t \"430102\": \"芙蓉区\",\n\t \"430103\": \"天心区\",\n\t \"430104\": \"岳麓区\",\n\t \"430105\": \"开福区\",\n\t \"430111\": \"雨花区\",\n\t \"430121\": \"长沙县\",\n\t \"430122\": \"望城区\",\n\t \"430124\": \"宁乡县\",\n\t \"430181\": \"浏阳市\",\n\t \"430182\": \"其它区\",\n\t \"430200\": \"株洲市\",\n\t \"430202\": \"荷塘区\",\n\t \"430203\": \"芦淞区\",\n\t \"430204\": \"石峰区\",\n\t \"430211\": \"天元区\",\n\t \"430221\": \"株洲县\",\n\t \"430223\": \"攸县\",\n\t \"430224\": \"茶陵县\",\n\t \"430225\": \"炎陵县\",\n\t \"430281\": \"醴陵市\",\n\t \"430282\": \"其它区\",\n\t \"430300\": \"湘潭市\",\n\t \"430302\": \"雨湖区\",\n\t \"430304\": \"岳塘区\",\n\t \"430321\": \"湘潭县\",\n\t \"430381\": \"湘乡市\",\n\t \"430382\": \"韶山市\",\n\t \"430383\": \"其它区\",\n\t \"430400\": \"衡阳市\",\n\t \"430405\": \"珠晖区\",\n\t \"430406\": \"雁峰区\",\n\t \"430407\": \"石鼓区\",\n\t \"430408\": \"蒸湘区\",\n\t \"430412\": \"南岳区\",\n\t \"430421\": \"衡阳县\",\n\t \"430422\": \"衡南县\",\n\t \"430423\": \"衡山县\",\n\t \"430424\": \"衡东县\",\n\t \"430426\": \"祁东县\",\n\t \"430481\": \"耒阳市\",\n\t \"430482\": \"常宁市\",\n\t \"430483\": \"其它区\",\n\t \"430500\": \"邵阳市\",\n\t \"430502\": \"双清区\",\n\t \"430503\": \"大祥区\",\n\t \"430511\": \"北塔区\",\n\t \"430521\": \"邵东县\",\n\t \"430522\": \"新邵县\",\n\t \"430523\": \"邵阳县\",\n\t \"430524\": \"隆回县\",\n\t \"430525\": \"洞口县\",\n\t \"430527\": \"绥宁县\",\n\t \"430528\": \"新宁县\",\n\t \"430529\": \"城步苗族自治县\",\n\t \"430581\": \"武冈市\",\n\t \"430582\": \"其它区\",\n\t \"430600\": \"岳阳市\",\n\t \"430602\": \"岳阳楼区\",\n\t \"430603\": \"云溪区\",\n\t \"430611\": \"君山区\",\n\t \"430621\": \"岳阳县\",\n\t \"430623\": \"华容县\",\n\t \"430624\": \"湘阴县\",\n\t \"430626\": \"平江县\",\n\t \"430681\": \"汨罗市\",\n\t \"430682\": \"临湘市\",\n\t \"430683\": \"其它区\",\n\t \"430700\": \"常德市\",\n\t \"430702\": \"武陵区\",\n\t \"430703\": \"鼎城区\",\n\t \"430721\": \"安乡县\",\n\t \"430722\": \"汉寿县\",\n\t \"430723\": \"澧县\",\n\t \"430724\": \"临澧县\",\n\t \"430725\": \"桃源县\",\n\t \"430726\": \"石门县\",\n\t \"430781\": \"津市市\",\n\t \"430782\": \"其它区\",\n\t \"430800\": \"张家界市\",\n\t \"430802\": \"永定区\",\n\t \"430811\": \"武陵源区\",\n\t \"430821\": \"慈利县\",\n\t \"430822\": \"桑植县\",\n\t \"430823\": \"其它区\",\n\t \"430900\": \"益阳市\",\n\t \"430902\": \"资阳区\",\n\t \"430903\": \"赫山区\",\n\t \"430921\": \"南县\",\n\t \"430922\": \"桃江县\",\n\t \"430923\": \"安化县\",\n\t \"430981\": \"沅江市\",\n\t \"430982\": \"其它区\",\n\t \"431000\": \"郴州市\",\n\t \"431002\": \"北湖区\",\n\t \"431003\": \"苏仙区\",\n\t \"431021\": \"桂阳县\",\n\t \"431022\": \"宜章县\",\n\t \"431023\": \"永兴县\",\n\t \"431024\": \"嘉禾县\",\n\t \"431025\": \"临武县\",\n\t \"431026\": \"汝城县\",\n\t \"431027\": \"桂东县\",\n\t \"431028\": \"安仁县\",\n\t \"431081\": \"资兴市\",\n\t \"431082\": \"其它区\",\n\t \"431100\": \"永州市\",\n\t \"431102\": \"零陵区\",\n\t \"431103\": \"冷水滩区\",\n\t \"431121\": \"祁阳县\",\n\t \"431122\": \"东安县\",\n\t \"431123\": \"双牌县\",\n\t \"431124\": \"道县\",\n\t \"431125\": \"江永县\",\n\t \"431126\": \"宁远县\",\n\t \"431127\": \"蓝山县\",\n\t \"431128\": \"新田县\",\n\t \"431129\": \"江华瑶族自治县\",\n\t \"431130\": \"其它区\",\n\t \"431200\": \"怀化市\",\n\t \"431202\": \"鹤城区\",\n\t \"431221\": \"中方县\",\n\t \"431222\": \"沅陵县\",\n\t \"431223\": \"辰溪县\",\n\t \"431224\": \"溆浦县\",\n\t \"431225\": \"会同县\",\n\t \"431226\": \"麻阳苗族自治县\",\n\t \"431227\": \"新晃侗族自治县\",\n\t \"431228\": \"芷江侗族自治县\",\n\t \"431229\": \"靖州苗族侗族自治县\",\n\t \"431230\": \"通道侗族自治县\",\n\t \"431281\": \"洪江市\",\n\t \"431282\": \"其它区\",\n\t \"431300\": \"娄底市\",\n\t \"431302\": \"娄星区\",\n\t \"431321\": \"双峰县\",\n\t \"431322\": \"新化县\",\n\t \"431381\": \"冷水江市\",\n\t \"431382\": \"涟源市\",\n\t \"431383\": \"其它区\",\n\t \"433100\": \"湘西土家族苗族自治州\",\n\t \"433101\": \"吉首市\",\n\t \"433122\": \"泸溪县\",\n\t \"433123\": \"凤凰县\",\n\t \"433124\": \"花垣县\",\n\t \"433125\": \"保靖县\",\n\t \"433126\": \"古丈县\",\n\t \"433127\": \"永顺县\",\n\t \"433130\": \"龙山县\",\n\t \"433131\": \"其它区\",\n\t \"440000\": \"广东省\",\n\t \"440100\": \"广州市\",\n\t \"440103\": \"荔湾区\",\n\t \"440104\": \"越秀区\",\n\t \"440105\": \"海珠区\",\n\t \"440106\": \"天河区\",\n\t \"440111\": \"白云区\",\n\t \"440112\": \"黄埔区\",\n\t \"440113\": \"番禺区\",\n\t \"440114\": \"花都区\",\n\t \"440115\": \"南沙区\",\n\t \"440116\": \"萝岗区\",\n\t \"440183\": \"增城市\",\n\t \"440184\": \"从化市\",\n\t \"440189\": \"其它区\",\n\t \"440200\": \"韶关市\",\n\t \"440203\": \"武江区\",\n\t \"440204\": \"浈江区\",\n\t \"440205\": \"曲江区\",\n\t \"440222\": \"始兴县\",\n\t \"440224\": \"仁化县\",\n\t \"440229\": \"翁源县\",\n\t \"440232\": \"乳源瑶族自治县\",\n\t \"440233\": \"新丰县\",\n\t \"440281\": \"乐昌市\",\n\t \"440282\": \"南雄市\",\n\t \"440283\": \"其它区\",\n\t \"440300\": \"深圳市\",\n\t \"440303\": \"罗湖区\",\n\t \"440304\": \"福田区\",\n\t \"440305\": \"南山区\",\n\t \"440306\": \"宝安区\",\n\t \"440307\": \"龙岗区\",\n\t \"440308\": \"盐田区\",\n\t \"440309\": \"其它区\",\n\t \"440320\": \"光明新区\",\n\t \"440321\": \"坪山新区\",\n\t \"440322\": \"大鹏新区\",\n\t \"440323\": \"龙华新区\",\n\t \"440400\": \"珠海市\",\n\t \"440402\": \"香洲区\",\n\t \"440403\": \"斗门区\",\n\t \"440404\": \"金湾区\",\n\t \"440488\": \"其它区\",\n\t \"440500\": \"汕头市\",\n\t \"440507\": \"龙湖区\",\n\t \"440511\": \"金平区\",\n\t \"440512\": \"濠江区\",\n\t \"440513\": \"潮阳区\",\n\t \"440514\": \"潮南区\",\n\t \"440515\": \"澄海区\",\n\t \"440523\": \"南澳县\",\n\t \"440524\": \"其它区\",\n\t \"440600\": \"佛山市\",\n\t \"440604\": \"禅城区\",\n\t \"440605\": \"南海区\",\n\t \"440606\": \"顺德区\",\n\t \"440607\": \"三水区\",\n\t \"440608\": \"高明区\",\n\t \"440609\": \"其它区\",\n\t \"440700\": \"江门市\",\n\t \"440703\": \"蓬江区\",\n\t \"440704\": \"江海区\",\n\t \"440705\": \"新会区\",\n\t \"440781\": \"台山市\",\n\t \"440783\": \"开平市\",\n\t \"440784\": \"鹤山市\",\n\t \"440785\": \"恩平市\",\n\t \"440786\": \"其它区\",\n\t \"440800\": \"湛江市\",\n\t \"440802\": \"赤坎区\",\n\t \"440803\": \"霞山区\",\n\t \"440804\": \"坡头区\",\n\t \"440811\": \"麻章区\",\n\t \"440823\": \"遂溪县\",\n\t \"440825\": \"徐闻县\",\n\t \"440881\": \"廉江市\",\n\t \"440882\": \"雷州市\",\n\t \"440883\": \"吴川市\",\n\t \"440884\": \"其它区\",\n\t \"440900\": \"茂名市\",\n\t \"440902\": \"茂南区\",\n\t \"440903\": \"茂港区\",\n\t \"440923\": \"电白县\",\n\t \"440981\": \"高州市\",\n\t \"440982\": \"化州市\",\n\t \"440983\": \"信宜市\",\n\t \"440984\": \"其它区\",\n\t \"441200\": \"肇庆市\",\n\t \"441202\": \"端州区\",\n\t \"441203\": \"鼎湖区\",\n\t \"441223\": \"广宁县\",\n\t \"441224\": \"怀集县\",\n\t \"441225\": \"封开县\",\n\t \"441226\": \"德庆县\",\n\t \"441283\": \"高要市\",\n\t \"441284\": \"四会市\",\n\t \"441285\": \"其它区\",\n\t \"441300\": \"惠州市\",\n\t \"441302\": \"惠城区\",\n\t \"441303\": \"惠阳区\",\n\t \"441322\": \"博罗县\",\n\t \"441323\": \"惠东县\",\n\t \"441324\": \"龙门县\",\n\t \"441325\": \"其它区\",\n\t \"441400\": \"梅州市\",\n\t \"441402\": \"梅江区\",\n\t \"441421\": \"梅县\",\n\t \"441422\": \"大埔县\",\n\t \"441423\": \"丰顺县\",\n\t \"441424\": \"五华县\",\n\t \"441426\": \"平远县\",\n\t \"441427\": \"蕉岭县\",\n\t \"441481\": \"兴宁市\",\n\t \"441482\": \"其它区\",\n\t \"441500\": \"汕尾市\",\n\t \"441502\": \"城区\",\n\t \"441521\": \"海丰县\",\n\t \"441523\": \"陆河县\",\n\t \"441581\": \"陆丰市\",\n\t \"441582\": \"其它区\",\n\t \"441600\": \"河源市\",\n\t \"441602\": \"源城区\",\n\t \"441621\": \"紫金县\",\n\t \"441622\": \"龙川县\",\n\t \"441623\": \"连平县\",\n\t \"441624\": \"和平县\",\n\t \"441625\": \"东源县\",\n\t \"441626\": \"其它区\",\n\t \"441700\": \"阳江市\",\n\t \"441702\": \"江城区\",\n\t \"441721\": \"阳西县\",\n\t \"441723\": \"阳东县\",\n\t \"441781\": \"阳春市\",\n\t \"441782\": \"其它区\",\n\t \"441800\": \"清远市\",\n\t \"441802\": \"清城区\",\n\t \"441821\": \"佛冈县\",\n\t \"441823\": \"阳山县\",\n\t \"441825\": \"连山壮族瑶族自治县\",\n\t \"441826\": \"连南瑶族自治县\",\n\t \"441827\": \"清新区\",\n\t \"441881\": \"英德市\",\n\t \"441882\": \"连州市\",\n\t \"441883\": \"其它区\",\n\t \"441900\": \"东莞市\",\n\t \"442000\": \"中山市\",\n\t \"442101\": \"东沙群岛\",\n\t \"445100\": \"潮州市\",\n\t \"445102\": \"湘桥区\",\n\t \"445121\": \"潮安区\",\n\t \"445122\": \"饶平县\",\n\t \"445186\": \"其它区\",\n\t \"445200\": \"揭阳市\",\n\t \"445202\": \"榕城区\",\n\t \"445221\": \"揭东区\",\n\t \"445222\": \"揭西县\",\n\t \"445224\": \"惠来县\",\n\t \"445281\": \"普宁市\",\n\t \"445285\": \"其它区\",\n\t \"445300\": \"云浮市\",\n\t \"445302\": \"云城区\",\n\t \"445321\": \"新兴县\",\n\t \"445322\": \"郁南县\",\n\t \"445323\": \"云安县\",\n\t \"445381\": \"罗定市\",\n\t \"445382\": \"其它区\",\n\t \"450000\": \"广西壮族自治区\",\n\t \"450100\": \"南宁市\",\n\t \"450102\": \"兴宁区\",\n\t \"450103\": \"青秀区\",\n\t \"450105\": \"江南区\",\n\t \"450107\": \"西乡塘区\",\n\t \"450108\": \"良庆区\",\n\t \"450109\": \"邕宁区\",\n\t \"450122\": \"武鸣县\",\n\t \"450123\": \"隆安县\",\n\t \"450124\": \"马山县\",\n\t \"450125\": \"上林县\",\n\t \"450126\": \"宾阳县\",\n\t \"450127\": \"横县\",\n\t \"450128\": \"其它区\",\n\t \"450200\": \"柳州市\",\n\t \"450202\": \"城中区\",\n\t \"450203\": \"鱼峰区\",\n\t \"450204\": \"柳南区\",\n\t \"450205\": \"柳北区\",\n\t \"450221\": \"柳江县\",\n\t \"450222\": \"柳城县\",\n\t \"450223\": \"鹿寨县\",\n\t \"450224\": \"融安县\",\n\t \"450225\": \"融水苗族自治县\",\n\t \"450226\": \"三江侗族自治县\",\n\t \"450227\": \"其它区\",\n\t \"450300\": \"桂林市\",\n\t \"450302\": \"秀峰区\",\n\t \"450303\": \"叠彩区\",\n\t \"450304\": \"象山区\",\n\t \"450305\": \"七星区\",\n\t \"450311\": \"雁山区\",\n\t \"450321\": \"阳朔县\",\n\t \"450322\": \"临桂区\",\n\t \"450323\": \"灵川县\",\n\t \"450324\": \"全州县\",\n\t \"450325\": \"兴安县\",\n\t \"450326\": \"永福县\",\n\t \"450327\": \"灌阳县\",\n\t \"450328\": \"龙胜各族自治县\",\n\t \"450329\": \"资源县\",\n\t \"450330\": \"平乐县\",\n\t \"450331\": \"荔浦县\",\n\t \"450332\": \"恭城瑶族自治县\",\n\t \"450333\": \"其它区\",\n\t \"450400\": \"梧州市\",\n\t \"450403\": \"万秀区\",\n\t \"450405\": \"长洲区\",\n\t \"450406\": \"龙圩区\",\n\t \"450421\": \"苍梧县\",\n\t \"450422\": \"藤县\",\n\t \"450423\": \"蒙山县\",\n\t \"450481\": \"岑溪市\",\n\t \"450482\": \"其它区\",\n\t \"450500\": \"北海市\",\n\t \"450502\": \"海城区\",\n\t \"450503\": \"银海区\",\n\t \"450512\": \"铁山港区\",\n\t \"450521\": \"合浦县\",\n\t \"450522\": \"其它区\",\n\t \"450600\": \"防城港市\",\n\t \"450602\": \"港口区\",\n\t \"450603\": \"防城区\",\n\t \"450621\": \"上思县\",\n\t \"450681\": \"东兴市\",\n\t \"450682\": \"其它区\",\n\t \"450700\": \"钦州市\",\n\t \"450702\": \"钦南区\",\n\t \"450703\": \"钦北区\",\n\t \"450721\": \"灵山县\",\n\t \"450722\": \"浦北县\",\n\t \"450723\": \"其它区\",\n\t \"450800\": \"贵港市\",\n\t \"450802\": \"港北区\",\n\t \"450803\": \"港南区\",\n\t \"450804\": \"覃塘区\",\n\t \"450821\": \"平南县\",\n\t \"450881\": \"桂平市\",\n\t \"450882\": \"其它区\",\n\t \"450900\": \"玉林市\",\n\t \"450902\": \"玉州区\",\n\t \"450903\": \"福绵区\",\n\t \"450921\": \"容县\",\n\t \"450922\": \"陆川县\",\n\t \"450923\": \"博白县\",\n\t \"450924\": \"兴业县\",\n\t \"450981\": \"北流市\",\n\t \"450982\": \"其它区\",\n\t \"451000\": \"百色市\",\n\t \"451002\": \"右江区\",\n\t \"451021\": \"田阳县\",\n\t \"451022\": \"田东县\",\n\t \"451023\": \"平果县\",\n\t \"451024\": \"德保县\",\n\t \"451025\": \"靖西县\",\n\t \"451026\": \"那坡县\",\n\t \"451027\": \"凌云县\",\n\t \"451028\": \"乐业县\",\n\t \"451029\": \"田林县\",\n\t \"451030\": \"西林县\",\n\t \"451031\": \"隆林各族自治县\",\n\t \"451032\": \"其它区\",\n\t \"451100\": \"贺州市\",\n\t \"451102\": \"八步区\",\n\t \"451119\": \"平桂管理区\",\n\t \"451121\": \"昭平县\",\n\t \"451122\": \"钟山县\",\n\t \"451123\": \"富川瑶族自治县\",\n\t \"451124\": \"其它区\",\n\t \"451200\": \"河池市\",\n\t \"451202\": \"金城江区\",\n\t \"451221\": \"南丹县\",\n\t \"451222\": \"天峨县\",\n\t \"451223\": \"凤山县\",\n\t \"451224\": \"东兰县\",\n\t \"451225\": \"罗城仫佬族自治县\",\n\t \"451226\": \"环江毛南族自治县\",\n\t \"451227\": \"巴马瑶族自治县\",\n\t \"451228\": \"都安瑶族自治县\",\n\t \"451229\": \"大化瑶族自治县\",\n\t \"451281\": \"宜州市\",\n\t \"451282\": \"其它区\",\n\t \"451300\": \"来宾市\",\n\t \"451302\": \"兴宾区\",\n\t \"451321\": \"忻城县\",\n\t \"451322\": \"象州县\",\n\t \"451323\": \"武宣县\",\n\t \"451324\": \"金秀瑶族自治县\",\n\t \"451381\": \"合山市\",\n\t \"451382\": \"其它区\",\n\t \"451400\": \"崇左市\",\n\t \"451402\": \"江州区\",\n\t \"451421\": \"扶绥县\",\n\t \"451422\": \"宁明县\",\n\t \"451423\": \"龙州县\",\n\t \"451424\": \"大新县\",\n\t \"451425\": \"天等县\",\n\t \"451481\": \"凭祥市\",\n\t \"451482\": \"其它区\",\n\t \"460000\": \"海南省\",\n\t \"460100\": \"海口市\",\n\t \"460105\": \"秀英区\",\n\t \"460106\": \"龙华区\",\n\t \"460107\": \"琼山区\",\n\t \"460108\": \"美兰区\",\n\t \"460109\": \"其它区\",\n\t \"460200\": \"三亚市\",\n\t \"460300\": \"三沙市\",\n\t \"460321\": \"西沙群岛\",\n\t \"460322\": \"南沙群岛\",\n\t \"460323\": \"中沙群岛的岛礁及其海域\",\n\t \"469001\": \"五指山市\",\n\t \"469002\": \"琼海市\",\n\t \"469003\": \"儋州市\",\n\t \"469005\": \"文昌市\",\n\t \"469006\": \"万宁市\",\n\t \"469007\": \"东方市\",\n\t \"469025\": \"定安县\",\n\t \"469026\": \"屯昌县\",\n\t \"469027\": \"澄迈县\",\n\t \"469028\": \"临高县\",\n\t \"469030\": \"白沙黎族自治县\",\n\t \"469031\": \"昌江黎族自治县\",\n\t \"469033\": \"乐东黎族自治县\",\n\t \"469034\": \"陵水黎族自治县\",\n\t \"469035\": \"保亭黎族苗族自治县\",\n\t \"469036\": \"琼中黎族苗族自治县\",\n\t \"471005\": \"其它区\",\n\t \"500000\": \"重庆\",\n\t \"500100\": \"重庆市\",\n\t \"500101\": \"万州区\",\n\t \"500102\": \"涪陵区\",\n\t \"500103\": \"渝中区\",\n\t \"500104\": \"大渡口区\",\n\t \"500105\": \"江北区\",\n\t \"500106\": \"沙坪坝区\",\n\t \"500107\": \"九龙坡区\",\n\t \"500108\": \"南岸区\",\n\t \"500109\": \"北碚区\",\n\t \"500110\": \"万盛区\",\n\t \"500111\": \"双桥区\",\n\t \"500112\": \"渝北区\",\n\t \"500113\": \"巴南区\",\n\t \"500114\": \"黔江区\",\n\t \"500115\": \"长寿区\",\n\t \"500222\": \"綦江区\",\n\t \"500223\": \"潼南县\",\n\t \"500224\": \"铜梁县\",\n\t \"500225\": \"大足区\",\n\t \"500226\": \"荣昌县\",\n\t \"500227\": \"璧山县\",\n\t \"500228\": \"梁平县\",\n\t \"500229\": \"城口县\",\n\t \"500230\": \"丰都县\",\n\t \"500231\": \"垫江县\",\n\t \"500232\": \"武隆县\",\n\t \"500233\": \"忠县\",\n\t \"500234\": \"开县\",\n\t \"500235\": \"云阳县\",\n\t \"500236\": \"奉节县\",\n\t \"500237\": \"巫山县\",\n\t \"500238\": \"巫溪县\",\n\t \"500240\": \"石柱土家族自治县\",\n\t \"500241\": \"秀山土家族苗族自治县\",\n\t \"500242\": \"酉阳土家族苗族自治县\",\n\t \"500243\": \"彭水苗族土家族自治县\",\n\t \"500381\": \"江津区\",\n\t \"500382\": \"合川区\",\n\t \"500383\": \"永川区\",\n\t \"500384\": \"南川区\",\n\t \"500385\": \"其它区\",\n\t \"510000\": \"四川省\",\n\t \"510100\": \"成都市\",\n\t \"510104\": \"锦江区\",\n\t \"510105\": \"青羊区\",\n\t \"510106\": \"金牛区\",\n\t \"510107\": \"武侯区\",\n\t \"510108\": \"成华区\",\n\t \"510112\": \"龙泉驿区\",\n\t \"510113\": \"青白江区\",\n\t \"510114\": \"新都区\",\n\t \"510115\": \"温江区\",\n\t \"510121\": \"金堂县\",\n\t \"510122\": \"双流县\",\n\t \"510124\": \"郫县\",\n\t \"510129\": \"大邑县\",\n\t \"510131\": \"蒲江县\",\n\t \"510132\": \"新津县\",\n\t \"510181\": \"都江堰市\",\n\t \"510182\": \"彭州市\",\n\t \"510183\": \"邛崃市\",\n\t \"510184\": \"崇州市\",\n\t \"510185\": \"其它区\",\n\t \"510300\": \"自贡市\",\n\t \"510302\": \"自流井区\",\n\t \"510303\": \"贡井区\",\n\t \"510304\": \"大安区\",\n\t \"510311\": \"沿滩区\",\n\t \"510321\": \"荣县\",\n\t \"510322\": \"富顺县\",\n\t \"510323\": \"其它区\",\n\t \"510400\": \"攀枝花市\",\n\t \"510402\": \"东区\",\n\t \"510403\": \"西区\",\n\t \"510411\": \"仁和区\",\n\t \"510421\": \"米易县\",\n\t \"510422\": \"盐边县\",\n\t \"510423\": \"其它区\",\n\t \"510500\": \"泸州市\",\n\t \"510502\": \"江阳区\",\n\t \"510503\": \"纳溪区\",\n\t \"510504\": \"龙马潭区\",\n\t \"510521\": \"泸县\",\n\t \"510522\": \"合江县\",\n\t \"510524\": \"叙永县\",\n\t \"510525\": \"古蔺县\",\n\t \"510526\": \"其它区\",\n\t \"510600\": \"德阳市\",\n\t \"510603\": \"旌阳区\",\n\t \"510623\": \"中江县\",\n\t \"510626\": \"罗江县\",\n\t \"510681\": \"广汉市\",\n\t \"510682\": \"什邡市\",\n\t \"510683\": \"绵竹市\",\n\t \"510684\": \"其它区\",\n\t \"510700\": \"绵阳市\",\n\t \"510703\": \"涪城区\",\n\t \"510704\": \"游仙区\",\n\t \"510722\": \"三台县\",\n\t \"510723\": \"盐亭县\",\n\t \"510724\": \"安县\",\n\t \"510725\": \"梓潼县\",\n\t \"510726\": \"北川羌族自治县\",\n\t \"510727\": \"平武县\",\n\t \"510781\": \"江油市\",\n\t \"510782\": \"其它区\",\n\t \"510800\": \"广元市\",\n\t \"510802\": \"利州区\",\n\t \"510811\": \"昭化区\",\n\t \"510812\": \"朝天区\",\n\t \"510821\": \"旺苍县\",\n\t \"510822\": \"青川县\",\n\t \"510823\": \"剑阁县\",\n\t \"510824\": \"苍溪县\",\n\t \"510825\": \"其它区\",\n\t \"510900\": \"遂宁市\",\n\t \"510903\": \"船山区\",\n\t \"510904\": \"安居区\",\n\t \"510921\": \"蓬溪县\",\n\t \"510922\": \"射洪县\",\n\t \"510923\": \"大英县\",\n\t \"510924\": \"其它区\",\n\t \"511000\": \"内江市\",\n\t \"511002\": \"市中区\",\n\t \"511011\": \"东兴区\",\n\t \"511024\": \"威远县\",\n\t \"511025\": \"资中县\",\n\t \"511028\": \"隆昌县\",\n\t \"511029\": \"其它区\",\n\t \"511100\": \"乐山市\",\n\t \"511102\": \"市中区\",\n\t \"511111\": \"沙湾区\",\n\t \"511112\": \"五通桥区\",\n\t \"511113\": \"金口河区\",\n\t \"511123\": \"犍为县\",\n\t \"511124\": \"井研县\",\n\t \"511126\": \"夹江县\",\n\t \"511129\": \"沐川县\",\n\t \"511132\": \"峨边彝族自治县\",\n\t \"511133\": \"马边彝族自治县\",\n\t \"511181\": \"峨眉山市\",\n\t \"511182\": \"其它区\",\n\t \"511300\": \"南充市\",\n\t \"511302\": \"顺庆区\",\n\t \"511303\": \"高坪区\",\n\t \"511304\": \"嘉陵区\",\n\t \"511321\": \"南部县\",\n\t \"511322\": \"营山县\",\n\t \"511323\": \"蓬安县\",\n\t \"511324\": \"仪陇县\",\n\t \"511325\": \"西充县\",\n\t \"511381\": \"阆中市\",\n\t \"511382\": \"其它区\",\n\t \"511400\": \"眉山市\",\n\t \"511402\": \"东坡区\",\n\t \"511421\": \"仁寿县\",\n\t \"511422\": \"彭山县\",\n\t \"511423\": \"洪雅县\",\n\t \"511424\": \"丹棱县\",\n\t \"511425\": \"青神县\",\n\t \"511426\": \"其它区\",\n\t \"511500\": \"宜宾市\",\n\t \"511502\": \"翠屏区\",\n\t \"511521\": \"宜宾县\",\n\t \"511522\": \"南溪区\",\n\t \"511523\": \"江安县\",\n\t \"511524\": \"长宁县\",\n\t \"511525\": \"高县\",\n\t \"511526\": \"珙县\",\n\t \"511527\": \"筠连县\",\n\t \"511528\": \"兴文县\",\n\t \"511529\": \"屏山县\",\n\t \"511530\": \"其它区\",\n\t \"511600\": \"广安市\",\n\t \"511602\": \"广安区\",\n\t \"511603\": \"前锋区\",\n\t \"511621\": \"岳池县\",\n\t \"511622\": \"武胜县\",\n\t \"511623\": \"邻水县\",\n\t \"511681\": \"华蓥市\",\n\t \"511683\": \"其它区\",\n\t \"511700\": \"达州市\",\n\t \"511702\": \"通川区\",\n\t \"511721\": \"达川区\",\n\t \"511722\": \"宣汉县\",\n\t \"511723\": \"开江县\",\n\t \"511724\": \"大竹县\",\n\t \"511725\": \"渠县\",\n\t \"511781\": \"万源市\",\n\t \"511782\": \"其它区\",\n\t \"511800\": \"雅安市\",\n\t \"511802\": \"雨城区\",\n\t \"511821\": \"名山区\",\n\t \"511822\": \"荥经县\",\n\t \"511823\": \"汉源县\",\n\t \"511824\": \"石棉县\",\n\t \"511825\": \"天全县\",\n\t \"511826\": \"芦山县\",\n\t \"511827\": \"宝兴县\",\n\t \"511828\": \"其它区\",\n\t \"511900\": \"巴中市\",\n\t \"511902\": \"巴州区\",\n\t \"511903\": \"恩阳区\",\n\t \"511921\": \"通江县\",\n\t \"511922\": \"南江县\",\n\t \"511923\": \"平昌县\",\n\t \"511924\": \"其它区\",\n\t \"512000\": \"资阳市\",\n\t \"512002\": \"雁江区\",\n\t \"512021\": \"安岳县\",\n\t \"512022\": \"乐至县\",\n\t \"512081\": \"简阳市\",\n\t \"512082\": \"其它区\",\n\t \"513200\": \"阿坝藏族羌族自治州\",\n\t \"513221\": \"汶川县\",\n\t \"513222\": \"理县\",\n\t \"513223\": \"茂县\",\n\t \"513224\": \"松潘县\",\n\t \"513225\": \"九寨沟县\",\n\t \"513226\": \"金川县\",\n\t \"513227\": \"小金县\",\n\t \"513228\": \"黑水县\",\n\t \"513229\": \"马尔康县\",\n\t \"513230\": \"壤塘县\",\n\t \"513231\": \"阿坝县\",\n\t \"513232\": \"若尔盖县\",\n\t \"513233\": \"红原县\",\n\t \"513234\": \"其它区\",\n\t \"513300\": \"甘孜藏族自治州\",\n\t \"513321\": \"康定县\",\n\t \"513322\": \"泸定县\",\n\t \"513323\": \"丹巴县\",\n\t \"513324\": \"九龙县\",\n\t \"513325\": \"雅江县\",\n\t \"513326\": \"道孚县\",\n\t \"513327\": \"炉霍县\",\n\t \"513328\": \"甘孜县\",\n\t \"513329\": \"新龙县\",\n\t \"513330\": \"德格县\",\n\t \"513331\": \"白玉县\",\n\t \"513332\": \"石渠县\",\n\t \"513333\": \"色达县\",\n\t \"513334\": \"理塘县\",\n\t \"513335\": \"巴塘县\",\n\t \"513336\": \"乡城县\",\n\t \"513337\": \"稻城县\",\n\t \"513338\": \"得荣县\",\n\t \"513339\": \"其它区\",\n\t \"513400\": \"凉山彝族自治州\",\n\t \"513401\": \"西昌市\",\n\t \"513422\": \"木里藏族自治县\",\n\t \"513423\": \"盐源县\",\n\t \"513424\": \"德昌县\",\n\t \"513425\": \"会理县\",\n\t \"513426\": \"会东县\",\n\t \"513427\": \"宁南县\",\n\t \"513428\": \"普格县\",\n\t \"513429\": \"布拖县\",\n\t \"513430\": \"金阳县\",\n\t \"513431\": \"昭觉县\",\n\t \"513432\": \"喜德县\",\n\t \"513433\": \"冕宁县\",\n\t \"513434\": \"越西县\",\n\t \"513435\": \"甘洛县\",\n\t \"513436\": \"美姑县\",\n\t \"513437\": \"雷波县\",\n\t \"513438\": \"其它区\",\n\t \"520000\": \"贵州省\",\n\t \"520100\": \"贵阳市\",\n\t \"520102\": \"南明区\",\n\t \"520103\": \"云岩区\",\n\t \"520111\": \"花溪区\",\n\t \"520112\": \"乌当区\",\n\t \"520113\": \"白云区\",\n\t \"520121\": \"开阳县\",\n\t \"520122\": \"息烽县\",\n\t \"520123\": \"修文县\",\n\t \"520151\": \"观山湖区\",\n\t \"520181\": \"清镇市\",\n\t \"520182\": \"其它区\",\n\t \"520200\": \"六盘水市\",\n\t \"520201\": \"钟山区\",\n\t \"520203\": \"六枝特区\",\n\t \"520221\": \"水城县\",\n\t \"520222\": \"盘县\",\n\t \"520223\": \"其它区\",\n\t \"520300\": \"遵义市\",\n\t \"520302\": \"红花岗区\",\n\t \"520303\": \"汇川区\",\n\t \"520321\": \"遵义县\",\n\t \"520322\": \"桐梓县\",\n\t \"520323\": \"绥阳县\",\n\t \"520324\": \"正安县\",\n\t \"520325\": \"道真仡佬族苗族自治县\",\n\t \"520326\": \"务川仡佬族苗族自治县\",\n\t \"520327\": \"凤冈县\",\n\t \"520328\": \"湄潭县\",\n\t \"520329\": \"余庆县\",\n\t \"520330\": \"习水县\",\n\t \"520381\": \"赤水市\",\n\t \"520382\": \"仁怀市\",\n\t \"520383\": \"其它区\",\n\t \"520400\": \"安顺市\",\n\t \"520402\": \"西秀区\",\n\t \"520421\": \"平坝县\",\n\t \"520422\": \"普定县\",\n\t \"520423\": \"镇宁布依族苗族自治县\",\n\t \"520424\": \"关岭布依族苗族自治县\",\n\t \"520425\": \"紫云苗族布依族自治县\",\n\t \"520426\": \"其它区\",\n\t \"522200\": \"铜仁市\",\n\t \"522201\": \"碧江区\",\n\t \"522222\": \"江口县\",\n\t \"522223\": \"玉屏侗族自治县\",\n\t \"522224\": \"石阡县\",\n\t \"522225\": \"思南县\",\n\t \"522226\": \"印江土家族苗族自治县\",\n\t \"522227\": \"德江县\",\n\t \"522228\": \"沿河土家族自治县\",\n\t \"522229\": \"松桃苗族自治县\",\n\t \"522230\": \"万山区\",\n\t \"522231\": \"其它区\",\n\t \"522300\": \"黔西南布依族苗族自治州\",\n\t \"522301\": \"兴义市\",\n\t \"522322\": \"兴仁县\",\n\t \"522323\": \"普安县\",\n\t \"522324\": \"晴隆县\",\n\t \"522325\": \"贞丰县\",\n\t \"522326\": \"望谟县\",\n\t \"522327\": \"册亨县\",\n\t \"522328\": \"安龙县\",\n\t \"522329\": \"其它区\",\n\t \"522400\": \"毕节市\",\n\t \"522401\": \"七星关区\",\n\t \"522422\": \"大方县\",\n\t \"522423\": \"黔西县\",\n\t \"522424\": \"金沙县\",\n\t \"522425\": \"织金县\",\n\t \"522426\": \"纳雍县\",\n\t \"522427\": \"威宁彝族回族苗族自治县\",\n\t \"522428\": \"赫章县\",\n\t \"522429\": \"其它区\",\n\t \"522600\": \"黔东南苗族侗族自治州\",\n\t \"522601\": \"凯里市\",\n\t \"522622\": \"黄平县\",\n\t \"522623\": \"施秉县\",\n\t \"522624\": \"三穗县\",\n\t \"522625\": \"镇远县\",\n\t \"522626\": \"岑巩县\",\n\t \"522627\": \"天柱县\",\n\t \"522628\": \"锦屏县\",\n\t \"522629\": \"剑河县\",\n\t \"522630\": \"台江县\",\n\t \"522631\": \"黎平县\",\n\t \"522632\": \"榕江县\",\n\t \"522633\": \"从江县\",\n\t \"522634\": \"雷山县\",\n\t \"522635\": \"麻江县\",\n\t \"522636\": \"丹寨县\",\n\t \"522637\": \"其它区\",\n\t \"522700\": \"黔南布依族苗族自治州\",\n\t \"522701\": \"都匀市\",\n\t \"522702\": \"福泉市\",\n\t \"522722\": \"荔波县\",\n\t \"522723\": \"贵定县\",\n\t \"522725\": \"瓮安县\",\n\t \"522726\": \"独山县\",\n\t \"522727\": \"平塘县\",\n\t \"522728\": \"罗甸县\",\n\t \"522729\": \"长顺县\",\n\t \"522730\": \"龙里县\",\n\t \"522731\": \"惠水县\",\n\t \"522732\": \"三都水族自治县\",\n\t \"522733\": \"其它区\",\n\t \"530000\": \"云南省\",\n\t \"530100\": \"昆明市\",\n\t \"530102\": \"五华区\",\n\t \"530103\": \"盘龙区\",\n\t \"530111\": \"官渡区\",\n\t \"530112\": \"西山区\",\n\t \"530113\": \"东川区\",\n\t \"530121\": \"呈贡区\",\n\t \"530122\": \"晋宁县\",\n\t \"530124\": \"富民县\",\n\t \"530125\": \"宜良县\",\n\t \"530126\": \"石林彝族自治县\",\n\t \"530127\": \"嵩明县\",\n\t \"530128\": \"禄劝彝族苗族自治县\",\n\t \"530129\": \"寻甸回族彝族自治县\",\n\t \"530181\": \"安宁市\",\n\t \"530182\": \"其它区\",\n\t \"530300\": \"曲靖市\",\n\t \"530302\": \"麒麟区\",\n\t \"530321\": \"马龙县\",\n\t \"530322\": \"陆良县\",\n\t \"530323\": \"师宗县\",\n\t \"530324\": \"罗平县\",\n\t \"530325\": \"富源县\",\n\t \"530326\": \"会泽县\",\n\t \"530328\": \"沾益县\",\n\t \"530381\": \"宣威市\",\n\t \"530382\": \"其它区\",\n\t \"530400\": \"玉溪市\",\n\t \"530402\": \"红塔区\",\n\t \"530421\": \"江川县\",\n\t \"530422\": \"澄江县\",\n\t \"530423\": \"通海县\",\n\t \"530424\": \"华宁县\",\n\t \"530425\": \"易门县\",\n\t \"530426\": \"峨山彝族自治县\",\n\t \"530427\": \"新平彝族傣族自治县\",\n\t \"530428\": \"元江哈尼族彝族傣族自治县\",\n\t \"530429\": \"其它区\",\n\t \"530500\": \"保山市\",\n\t \"530502\": \"隆阳区\",\n\t \"530521\": \"施甸县\",\n\t \"530522\": \"腾冲县\",\n\t \"530523\": \"龙陵县\",\n\t \"530524\": \"昌宁县\",\n\t \"530525\": \"其它区\",\n\t \"530600\": \"昭通市\",\n\t \"530602\": \"昭阳区\",\n\t \"530621\": \"鲁甸县\",\n\t \"530622\": \"巧家县\",\n\t \"530623\": \"盐津县\",\n\t \"530624\": \"大关县\",\n\t \"530625\": \"永善县\",\n\t \"530626\": \"绥江县\",\n\t \"530627\": \"镇雄县\",\n\t \"530628\": \"彝良县\",\n\t \"530629\": \"威信县\",\n\t \"530630\": \"水富县\",\n\t \"530631\": \"其它区\",\n\t \"530700\": \"丽江市\",\n\t \"530702\": \"古城区\",\n\t \"530721\": \"玉龙纳西族自治县\",\n\t \"530722\": \"永胜县\",\n\t \"530723\": \"华坪县\",\n\t \"530724\": \"宁蒗彝族自治县\",\n\t \"530725\": \"其它区\",\n\t \"530800\": \"普洱市\",\n\t \"530802\": \"思茅区\",\n\t \"530821\": \"宁洱哈尼族彝族自治县\",\n\t \"530822\": \"墨江哈尼族自治县\",\n\t \"530823\": \"景东彝族自治县\",\n\t \"530824\": \"景谷傣族彝族自治县\",\n\t \"530825\": \"镇沅彝族哈尼族拉祜族自治县\",\n\t \"530826\": \"江城哈尼族彝族自治县\",\n\t \"530827\": \"孟连傣族拉祜族佤族自治县\",\n\t \"530828\": \"澜沧拉祜族自治县\",\n\t \"530829\": \"西盟佤族自治县\",\n\t \"530830\": \"其它区\",\n\t \"530900\": \"临沧市\",\n\t \"530902\": \"临翔区\",\n\t \"530921\": \"凤庆县\",\n\t \"530922\": \"云县\",\n\t \"530923\": \"永德县\",\n\t \"530924\": \"镇康县\",\n\t \"530925\": \"双江拉祜族佤族布朗族傣族自治县\",\n\t \"530926\": \"耿马傣族佤族自治县\",\n\t \"530927\": \"沧源佤族自治县\",\n\t \"530928\": \"其它区\",\n\t \"532300\": \"楚雄彝族自治州\",\n\t \"532301\": \"楚雄市\",\n\t \"532322\": \"双柏县\",\n\t \"532323\": \"牟定县\",\n\t \"532324\": \"南华县\",\n\t \"532325\": \"姚安县\",\n\t \"532326\": \"大姚县\",\n\t \"532327\": \"永仁县\",\n\t \"532328\": \"元谋县\",\n\t \"532329\": \"武定县\",\n\t \"532331\": \"禄丰县\",\n\t \"532332\": \"其它区\",\n\t \"532500\": \"红河哈尼族彝族自治州\",\n\t \"532501\": \"个旧市\",\n\t \"532502\": \"开远市\",\n\t \"532522\": \"蒙自市\",\n\t \"532523\": \"屏边苗族自治县\",\n\t \"532524\": \"建水县\",\n\t \"532525\": \"石屏县\",\n\t \"532526\": \"弥勒市\",\n\t \"532527\": \"泸西县\",\n\t \"532528\": \"元阳县\",\n\t \"532529\": \"红河县\",\n\t \"532530\": \"金平苗族瑶族傣族自治县\",\n\t \"532531\": \"绿春县\",\n\t \"532532\": \"河口瑶族自治县\",\n\t \"532533\": \"其它区\",\n\t \"532600\": \"文山壮族苗族自治州\",\n\t \"532621\": \"文山市\",\n\t \"532622\": \"砚山县\",\n\t \"532623\": \"西畴县\",\n\t \"532624\": \"麻栗坡县\",\n\t \"532625\": \"马关县\",\n\t \"532626\": \"丘北县\",\n\t \"532627\": \"广南县\",\n\t \"532628\": \"富宁县\",\n\t \"532629\": \"其它区\",\n\t \"532800\": \"西双版纳傣族自治州\",\n\t \"532801\": \"景洪市\",\n\t \"532822\": \"勐海县\",\n\t \"532823\": \"勐腊县\",\n\t \"532824\": \"其它区\",\n\t \"532900\": \"大理白族自治州\",\n\t \"532901\": \"大理市\",\n\t \"532922\": \"漾濞彝族自治县\",\n\t \"532923\": \"祥云县\",\n\t \"532924\": \"宾川县\",\n\t \"532925\": \"弥渡县\",\n\t \"532926\": \"南涧彝族自治县\",\n\t \"532927\": \"巍山彝族回族自治县\",\n\t \"532928\": \"永平县\",\n\t \"532929\": \"云龙县\",\n\t \"532930\": \"洱源县\",\n\t \"532931\": \"剑川县\",\n\t \"532932\": \"鹤庆县\",\n\t \"532933\": \"其它区\",\n\t \"533100\": \"德宏傣族景颇族自治州\",\n\t \"533102\": \"瑞丽市\",\n\t \"533103\": \"芒市\",\n\t \"533122\": \"梁河县\",\n\t \"533123\": \"盈江县\",\n\t \"533124\": \"陇川县\",\n\t \"533125\": \"其它区\",\n\t \"533300\": \"怒江傈僳族自治州\",\n\t \"533321\": \"泸水县\",\n\t \"533323\": \"福贡县\",\n\t \"533324\": \"贡山独龙族怒族自治县\",\n\t \"533325\": \"兰坪白族普米族自治县\",\n\t \"533326\": \"其它区\",\n\t \"533400\": \"迪庆藏族自治州\",\n\t \"533421\": \"香格里拉县\",\n\t \"533422\": \"德钦县\",\n\t \"533423\": \"维西傈僳族自治县\",\n\t \"533424\": \"其它区\",\n\t \"540000\": \"西藏自治区\",\n\t \"540100\": \"拉萨市\",\n\t \"540102\": \"城关区\",\n\t \"540121\": \"林周县\",\n\t \"540122\": \"当雄县\",\n\t \"540123\": \"尼木县\",\n\t \"540124\": \"曲水县\",\n\t \"540125\": \"堆龙德庆县\",\n\t \"540126\": \"达孜县\",\n\t \"540127\": \"墨竹工卡县\",\n\t \"540128\": \"其它区\",\n\t \"542100\": \"昌都地区\",\n\t \"542121\": \"昌都县\",\n\t \"542122\": \"江达县\",\n\t \"542123\": \"贡觉县\",\n\t \"542124\": \"类乌齐县\",\n\t \"542125\": \"丁青县\",\n\t \"542126\": \"察雅县\",\n\t \"542127\": \"八宿县\",\n\t \"542128\": \"左贡县\",\n\t \"542129\": \"芒康县\",\n\t \"542132\": \"洛隆县\",\n\t \"542133\": \"边坝县\",\n\t \"542134\": \"其它区\",\n\t \"542200\": \"山南地区\",\n\t \"542221\": \"乃东县\",\n\t \"542222\": \"扎囊县\",\n\t \"542223\": \"贡嘎县\",\n\t \"542224\": \"桑日县\",\n\t \"542225\": \"琼结县\",\n\t \"542226\": \"曲松县\",\n\t \"542227\": \"措美县\",\n\t \"542228\": \"洛扎县\",\n\t \"542229\": \"加查县\",\n\t \"542231\": \"隆子县\",\n\t \"542232\": \"错那县\",\n\t \"542233\": \"浪卡子县\",\n\t \"542234\": \"其它区\",\n\t \"542300\": \"日喀则地区\",\n\t \"542301\": \"日喀则市\",\n\t \"542322\": \"南木林县\",\n\t \"542323\": \"江孜县\",\n\t \"542324\": \"定日县\",\n\t \"542325\": \"萨迦县\",\n\t \"542326\": \"拉孜县\",\n\t \"542327\": \"昂仁县\",\n\t \"542328\": \"谢通门县\",\n\t \"542329\": \"白朗县\",\n\t \"542330\": \"仁布县\",\n\t \"542331\": \"康马县\",\n\t \"542332\": \"定结县\",\n\t \"542333\": \"仲巴县\",\n\t \"542334\": \"亚东县\",\n\t \"542335\": \"吉隆县\",\n\t \"542336\": \"聂拉木县\",\n\t \"542337\": \"萨嘎县\",\n\t \"542338\": \"岗巴县\",\n\t \"542339\": \"其它区\",\n\t \"542400\": \"那曲地区\",\n\t \"542421\": \"那曲县\",\n\t \"542422\": \"嘉黎县\",\n\t \"542423\": \"比如县\",\n\t \"542424\": \"聂荣县\",\n\t \"542425\": \"安多县\",\n\t \"542426\": \"申扎县\",\n\t \"542427\": \"索县\",\n\t \"542428\": \"班戈县\",\n\t \"542429\": \"巴青县\",\n\t \"542430\": \"尼玛县\",\n\t \"542431\": \"其它区\",\n\t \"542432\": \"双湖县\",\n\t \"542500\": \"阿里地区\",\n\t \"542521\": \"普兰县\",\n\t \"542522\": \"札达县\",\n\t \"542523\": \"噶尔县\",\n\t \"542524\": \"日土县\",\n\t \"542525\": \"革吉县\",\n\t \"542526\": \"改则县\",\n\t \"542527\": \"措勤县\",\n\t \"542528\": \"其它区\",\n\t \"542600\": \"林芝地区\",\n\t \"542621\": \"林芝县\",\n\t \"542622\": \"工布江达县\",\n\t \"542623\": \"米林县\",\n\t \"542624\": \"墨脱县\",\n\t \"542625\": \"波密县\",\n\t \"542626\": \"察隅县\",\n\t \"542627\": \"朗县\",\n\t \"542628\": \"其它区\",\n\t \"610000\": \"陕西省\",\n\t \"610100\": \"西安市\",\n\t \"610102\": \"新城区\",\n\t \"610103\": \"碑林区\",\n\t \"610104\": \"莲湖区\",\n\t \"610111\": \"灞桥区\",\n\t \"610112\": \"未央区\",\n\t \"610113\": \"雁塔区\",\n\t \"610114\": \"阎良区\",\n\t \"610115\": \"临潼区\",\n\t \"610116\": \"长安区\",\n\t \"610122\": \"蓝田县\",\n\t \"610124\": \"周至县\",\n\t \"610125\": \"户县\",\n\t \"610126\": \"高陵县\",\n\t \"610127\": \"其它区\",\n\t \"610200\": \"铜川市\",\n\t \"610202\": \"王益区\",\n\t \"610203\": \"印台区\",\n\t \"610204\": \"耀州区\",\n\t \"610222\": \"宜君县\",\n\t \"610223\": \"其它区\",\n\t \"610300\": \"宝鸡市\",\n\t \"610302\": \"渭滨区\",\n\t \"610303\": \"金台区\",\n\t \"610304\": \"陈仓区\",\n\t \"610322\": \"凤翔县\",\n\t \"610323\": \"岐山县\",\n\t \"610324\": \"扶风县\",\n\t \"610326\": \"眉县\",\n\t \"610327\": \"陇县\",\n\t \"610328\": \"千阳县\",\n\t \"610329\": \"麟游县\",\n\t \"610330\": \"凤县\",\n\t \"610331\": \"太白县\",\n\t \"610332\": \"其它区\",\n\t \"610400\": \"咸阳市\",\n\t \"610402\": \"秦都区\",\n\t \"610403\": \"杨陵区\",\n\t \"610404\": \"渭城区\",\n\t \"610422\": \"三原县\",\n\t \"610423\": \"泾阳县\",\n\t \"610424\": \"乾县\",\n\t \"610425\": \"礼泉县\",\n\t \"610426\": \"永寿县\",\n\t \"610427\": \"彬县\",\n\t \"610428\": \"长武县\",\n\t \"610429\": \"旬邑县\",\n\t \"610430\": \"淳化县\",\n\t \"610431\": \"武功县\",\n\t \"610481\": \"兴平市\",\n\t \"610482\": \"其它区\",\n\t \"610500\": \"渭南市\",\n\t \"610502\": \"临渭区\",\n\t \"610521\": \"华县\",\n\t \"610522\": \"潼关县\",\n\t \"610523\": \"大荔县\",\n\t \"610524\": \"合阳县\",\n\t \"610525\": \"澄城县\",\n\t \"610526\": \"蒲城县\",\n\t \"610527\": \"白水县\",\n\t \"610528\": \"富平县\",\n\t \"610581\": \"韩城市\",\n\t \"610582\": \"华阴市\",\n\t \"610583\": \"其它区\",\n\t \"610600\": \"延安市\",\n\t \"610602\": \"宝塔区\",\n\t \"610621\": \"延长县\",\n\t \"610622\": \"延川县\",\n\t \"610623\": \"子长县\",\n\t \"610624\": \"安塞县\",\n\t \"610625\": \"志丹县\",\n\t \"610626\": \"吴起县\",\n\t \"610627\": \"甘泉县\",\n\t \"610628\": \"富县\",\n\t \"610629\": \"洛川县\",\n\t \"610630\": \"宜川县\",\n\t \"610631\": \"黄龙县\",\n\t \"610632\": \"黄陵县\",\n\t \"610633\": \"其它区\",\n\t \"610700\": \"汉中市\",\n\t \"610702\": \"汉台区\",\n\t \"610721\": \"南郑县\",\n\t \"610722\": \"城固县\",\n\t \"610723\": \"洋县\",\n\t \"610724\": \"西乡县\",\n\t \"610725\": \"勉县\",\n\t \"610726\": \"宁强县\",\n\t \"610727\": \"略阳县\",\n\t \"610728\": \"镇巴县\",\n\t \"610729\": \"留坝县\",\n\t \"610730\": \"佛坪县\",\n\t \"610731\": \"其它区\",\n\t \"610800\": \"榆林市\",\n\t \"610802\": \"榆阳区\",\n\t \"610821\": \"神木县\",\n\t \"610822\": \"府谷县\",\n\t \"610823\": \"横山县\",\n\t \"610824\": \"靖边县\",\n\t \"610825\": \"定边县\",\n\t \"610826\": \"绥德县\",\n\t \"610827\": \"米脂县\",\n\t \"610828\": \"佳县\",\n\t \"610829\": \"吴堡县\",\n\t \"610830\": \"清涧县\",\n\t \"610831\": \"子洲县\",\n\t \"610832\": \"其它区\",\n\t \"610900\": \"安康市\",\n\t \"610902\": \"汉滨区\",\n\t \"610921\": \"汉阴县\",\n\t \"610922\": \"石泉县\",\n\t \"610923\": \"宁陕县\",\n\t \"610924\": \"紫阳县\",\n\t \"610925\": \"岚皋县\",\n\t \"610926\": \"平利县\",\n\t \"610927\": \"镇坪县\",\n\t \"610928\": \"旬阳县\",\n\t \"610929\": \"白河县\",\n\t \"610930\": \"其它区\",\n\t \"611000\": \"商洛市\",\n\t \"611002\": \"商州区\",\n\t \"611021\": \"洛南县\",\n\t \"611022\": \"丹凤县\",\n\t \"611023\": \"商南县\",\n\t \"611024\": \"山阳县\",\n\t \"611025\": \"镇安县\",\n\t \"611026\": \"柞水县\",\n\t \"611027\": \"其它区\",\n\t \"620000\": \"甘肃省\",\n\t \"620100\": \"兰州市\",\n\t \"620102\": \"城关区\",\n\t \"620103\": \"七里河区\",\n\t \"620104\": \"西固区\",\n\t \"620105\": \"安宁区\",\n\t \"620111\": \"红古区\",\n\t \"620121\": \"永登县\",\n\t \"620122\": \"皋兰县\",\n\t \"620123\": \"榆中县\",\n\t \"620124\": \"其它区\",\n\t \"620200\": \"嘉峪关市\",\n\t \"620300\": \"金昌市\",\n\t \"620302\": \"金川区\",\n\t \"620321\": \"永昌县\",\n\t \"620322\": \"其它区\",\n\t \"620400\": \"白银市\",\n\t \"620402\": \"白银区\",\n\t \"620403\": \"平川区\",\n\t \"620421\": \"靖远县\",\n\t \"620422\": \"会宁县\",\n\t \"620423\": \"景泰县\",\n\t \"620424\": \"其它区\",\n\t \"620500\": \"天水市\",\n\t \"620502\": \"秦州区\",\n\t \"620503\": \"麦积区\",\n\t \"620521\": \"清水县\",\n\t \"620522\": \"秦安县\",\n\t \"620523\": \"甘谷县\",\n\t \"620524\": \"武山县\",\n\t \"620525\": \"张家川回族自治县\",\n\t \"620526\": \"其它区\",\n\t \"620600\": \"武威市\",\n\t \"620602\": \"凉州区\",\n\t \"620621\": \"民勤县\",\n\t \"620622\": \"古浪县\",\n\t \"620623\": \"天祝藏族自治县\",\n\t \"620624\": \"其它区\",\n\t \"620700\": \"张掖市\",\n\t \"620702\": \"甘州区\",\n\t \"620721\": \"肃南裕固族自治县\",\n\t \"620722\": \"民乐县\",\n\t \"620723\": \"临泽县\",\n\t \"620724\": \"高台县\",\n\t \"620725\": \"山丹县\",\n\t \"620726\": \"其它区\",\n\t \"620800\": \"平凉市\",\n\t \"620802\": \"崆峒区\",\n\t \"620821\": \"泾川县\",\n\t \"620822\": \"灵台县\",\n\t \"620823\": \"崇信县\",\n\t \"620824\": \"华亭县\",\n\t \"620825\": \"庄浪县\",\n\t \"620826\": \"静宁县\",\n\t \"620827\": \"其它区\",\n\t \"620900\": \"酒泉市\",\n\t \"620902\": \"肃州区\",\n\t \"620921\": \"金塔县\",\n\t \"620922\": \"瓜州县\",\n\t \"620923\": \"肃北蒙古族自治县\",\n\t \"620924\": \"阿克塞哈萨克族自治县\",\n\t \"620981\": \"玉门市\",\n\t \"620982\": \"敦煌市\",\n\t \"620983\": \"其它区\",\n\t \"621000\": \"庆阳市\",\n\t \"621002\": \"西峰区\",\n\t \"621021\": \"庆城县\",\n\t \"621022\": \"环县\",\n\t \"621023\": \"华池县\",\n\t \"621024\": \"合水县\",\n\t \"621025\": \"正宁县\",\n\t \"621026\": \"宁县\",\n\t \"621027\": \"镇原县\",\n\t \"621028\": \"其它区\",\n\t \"621100\": \"定西市\",\n\t \"621102\": \"安定区\",\n\t \"621121\": \"通渭县\",\n\t \"621122\": \"陇西县\",\n\t \"621123\": \"渭源县\",\n\t \"621124\": \"临洮县\",\n\t \"621125\": \"漳县\",\n\t \"621126\": \"岷县\",\n\t \"621127\": \"其它区\",\n\t \"621200\": \"陇南市\",\n\t \"621202\": \"武都区\",\n\t \"621221\": \"成县\",\n\t \"621222\": \"文县\",\n\t \"621223\": \"宕昌县\",\n\t \"621224\": \"康县\",\n\t \"621225\": \"西和县\",\n\t \"621226\": \"礼县\",\n\t \"621227\": \"徽县\",\n\t \"621228\": \"两当县\",\n\t \"621229\": \"其它区\",\n\t \"622900\": \"临夏回族自治州\",\n\t \"622901\": \"临夏市\",\n\t \"622921\": \"临夏县\",\n\t \"622922\": \"康乐县\",\n\t \"622923\": \"永靖县\",\n\t \"622924\": \"广河县\",\n\t \"622925\": \"和政县\",\n\t \"622926\": \"东乡族自治县\",\n\t \"622927\": \"积石山保安族东乡族撒拉族自治县\",\n\t \"622928\": \"其它区\",\n\t \"623000\": \"甘南藏族自治州\",\n\t \"623001\": \"合作市\",\n\t \"623021\": \"临潭县\",\n\t \"623022\": \"卓尼县\",\n\t \"623023\": \"舟曲县\",\n\t \"623024\": \"迭部县\",\n\t \"623025\": \"玛曲县\",\n\t \"623026\": \"碌曲县\",\n\t \"623027\": \"夏河县\",\n\t \"623028\": \"其它区\",\n\t \"630000\": \"青海省\",\n\t \"630100\": \"西宁市\",\n\t \"630102\": \"城东区\",\n\t \"630103\": \"城中区\",\n\t \"630104\": \"城西区\",\n\t \"630105\": \"城北区\",\n\t \"630121\": \"大通回族土族自治县\",\n\t \"630122\": \"湟中县\",\n\t \"630123\": \"湟源县\",\n\t \"630124\": \"其它区\",\n\t \"632100\": \"海东市\",\n\t \"632121\": \"平安县\",\n\t \"632122\": \"民和回族土族自治县\",\n\t \"632123\": \"乐都区\",\n\t \"632126\": \"互助土族自治县\",\n\t \"632127\": \"化隆回族自治县\",\n\t \"632128\": \"循化撒拉族自治县\",\n\t \"632129\": \"其它区\",\n\t \"632200\": \"海北藏族自治州\",\n\t \"632221\": \"门源回族自治县\",\n\t \"632222\": \"祁连县\",\n\t \"632223\": \"海晏县\",\n\t \"632224\": \"刚察县\",\n\t \"632225\": \"其它区\",\n\t \"632300\": \"黄南藏族自治州\",\n\t \"632321\": \"同仁县\",\n\t \"632322\": \"尖扎县\",\n\t \"632323\": \"泽库县\",\n\t \"632324\": \"河南蒙古族自治县\",\n\t \"632325\": \"其它区\",\n\t \"632500\": \"海南藏族自治州\",\n\t \"632521\": \"共和县\",\n\t \"632522\": \"同德县\",\n\t \"632523\": \"贵德县\",\n\t \"632524\": \"兴海县\",\n\t \"632525\": \"贵南县\",\n\t \"632526\": \"其它区\",\n\t \"632600\": \"果洛藏族自治州\",\n\t \"632621\": \"玛沁县\",\n\t \"632622\": \"班玛县\",\n\t \"632623\": \"甘德县\",\n\t \"632624\": \"达日县\",\n\t \"632625\": \"久治县\",\n\t \"632626\": \"玛多县\",\n\t \"632627\": \"其它区\",\n\t \"632700\": \"玉树藏族自治州\",\n\t \"632721\": \"玉树市\",\n\t \"632722\": \"杂多县\",\n\t \"632723\": \"称多县\",\n\t \"632724\": \"治多县\",\n\t \"632725\": \"囊谦县\",\n\t \"632726\": \"曲麻莱县\",\n\t \"632727\": \"其它区\",\n\t \"632800\": \"海西蒙古族藏族自治州\",\n\t \"632801\": \"格尔木市\",\n\t \"632802\": \"德令哈市\",\n\t \"632821\": \"乌兰县\",\n\t \"632822\": \"都兰县\",\n\t \"632823\": \"天峻县\",\n\t \"632824\": \"其它区\",\n\t \"640000\": \"宁夏回族自治区\",\n\t \"640100\": \"银川市\",\n\t \"640104\": \"兴庆区\",\n\t \"640105\": \"西夏区\",\n\t \"640106\": \"金凤区\",\n\t \"640121\": \"永宁县\",\n\t \"640122\": \"贺兰县\",\n\t \"640181\": \"灵武市\",\n\t \"640182\": \"其它区\",\n\t \"640200\": \"石嘴山市\",\n\t \"640202\": \"大武口区\",\n\t \"640205\": \"惠农区\",\n\t \"640221\": \"平罗县\",\n\t \"640222\": \"其它区\",\n\t \"640300\": \"吴忠市\",\n\t \"640302\": \"利通区\",\n\t \"640303\": \"红寺堡区\",\n\t \"640323\": \"盐池县\",\n\t \"640324\": \"同心县\",\n\t \"640381\": \"青铜峡市\",\n\t \"640382\": \"其它区\",\n\t \"640400\": \"固原市\",\n\t \"640402\": \"原州区\",\n\t \"640422\": \"西吉县\",\n\t \"640423\": \"隆德县\",\n\t \"640424\": \"泾源县\",\n\t \"640425\": \"彭阳县\",\n\t \"640426\": \"其它区\",\n\t \"640500\": \"中卫市\",\n\t \"640502\": \"沙坡头区\",\n\t \"640521\": \"中宁县\",\n\t \"640522\": \"海原县\",\n\t \"640523\": \"其它区\",\n\t \"650000\": \"新疆维吾尔自治区\",\n\t \"650100\": \"乌鲁木齐市\",\n\t \"650102\": \"天山区\",\n\t \"650103\": \"沙依巴克区\",\n\t \"650104\": \"新市区\",\n\t \"650105\": \"水磨沟区\",\n\t \"650106\": \"头屯河区\",\n\t \"650107\": \"达坂城区\",\n\t \"650109\": \"米东区\",\n\t \"650121\": \"乌鲁木齐县\",\n\t \"650122\": \"其它区\",\n\t \"650200\": \"克拉玛依市\",\n\t \"650202\": \"独山子区\",\n\t \"650203\": \"克拉玛依区\",\n\t \"650204\": \"白碱滩区\",\n\t \"650205\": \"乌尔禾区\",\n\t \"650206\": \"其它区\",\n\t \"652100\": \"吐鲁番地区\",\n\t \"652101\": \"吐鲁番市\",\n\t \"652122\": \"鄯善县\",\n\t \"652123\": \"托克逊县\",\n\t \"652124\": \"其它区\",\n\t \"652200\": \"哈密地区\",\n\t \"652201\": \"哈密市\",\n\t \"652222\": \"巴里坤哈萨克自治县\",\n\t \"652223\": \"伊吾县\",\n\t \"652224\": \"其它区\",\n\t \"652300\": \"昌吉回族自治州\",\n\t \"652301\": \"昌吉市\",\n\t \"652302\": \"阜康市\",\n\t \"652323\": \"呼图壁县\",\n\t \"652324\": \"玛纳斯县\",\n\t \"652325\": \"奇台县\",\n\t \"652327\": \"吉木萨尔县\",\n\t \"652328\": \"木垒哈萨克自治县\",\n\t \"652329\": \"其它区\",\n\t \"652700\": \"博尔塔拉蒙古自治州\",\n\t \"652701\": \"博乐市\",\n\t \"652702\": \"阿拉山口市\",\n\t \"652722\": \"精河县\",\n\t \"652723\": \"温泉县\",\n\t \"652724\": \"其它区\",\n\t \"652800\": \"巴音郭楞蒙古自治州\",\n\t \"652801\": \"库尔勒市\",\n\t \"652822\": \"轮台县\",\n\t \"652823\": \"尉犁县\",\n\t \"652824\": \"若羌县\",\n\t \"652825\": \"且末县\",\n\t \"652826\": \"焉耆回族自治县\",\n\t \"652827\": \"和静县\",\n\t \"652828\": \"和硕县\",\n\t \"652829\": \"博湖县\",\n\t \"652830\": \"其它区\",\n\t \"652900\": \"阿克苏地区\",\n\t \"652901\": \"阿克苏市\",\n\t \"652922\": \"温宿县\",\n\t \"652923\": \"库车县\",\n\t \"652924\": \"沙雅县\",\n\t \"652925\": \"新和县\",\n\t \"652926\": \"拜城县\",\n\t \"652927\": \"乌什县\",\n\t \"652928\": \"阿瓦提县\",\n\t \"652929\": \"柯坪县\",\n\t \"652930\": \"其它区\",\n\t \"653000\": \"克孜勒苏柯尔克孜自治州\",\n\t \"653001\": \"阿图什市\",\n\t \"653022\": \"阿克陶县\",\n\t \"653023\": \"阿合奇县\",\n\t \"653024\": \"乌恰县\",\n\t \"653025\": \"其它区\",\n\t \"653100\": \"喀什地区\",\n\t \"653101\": \"喀什市\",\n\t \"653121\": \"疏附县\",\n\t \"653122\": \"疏勒县\",\n\t \"653123\": \"英吉沙县\",\n\t \"653124\": \"泽普县\",\n\t \"653125\": \"莎车县\",\n\t \"653126\": \"叶城县\",\n\t \"653127\": \"麦盖提县\",\n\t \"653128\": \"岳普湖县\",\n\t \"653129\": \"伽师县\",\n\t \"653130\": \"巴楚县\",\n\t \"653131\": \"塔什库尔干塔吉克自治县\",\n\t \"653132\": \"其它区\",\n\t \"653200\": \"和田地区\",\n\t \"653201\": \"和田市\",\n\t \"653221\": \"和田县\",\n\t \"653222\": \"墨玉县\",\n\t \"653223\": \"皮山县\",\n\t \"653224\": \"洛浦县\",\n\t \"653225\": \"策勒县\",\n\t \"653226\": \"于田县\",\n\t \"653227\": \"民丰县\",\n\t \"653228\": \"其它区\",\n\t \"654000\": \"伊犁哈萨克自治州\",\n\t \"654002\": \"伊宁市\",\n\t \"654003\": \"奎屯市\",\n\t \"654021\": \"伊宁县\",\n\t \"654022\": \"察布查尔锡伯自治县\",\n\t \"654023\": \"霍城县\",\n\t \"654024\": \"巩留县\",\n\t \"654025\": \"新源县\",\n\t \"654026\": \"昭苏县\",\n\t \"654027\": \"特克斯县\",\n\t \"654028\": \"尼勒克县\",\n\t \"654029\": \"其它区\",\n\t \"654200\": \"塔城地区\",\n\t \"654201\": \"塔城市\",\n\t \"654202\": \"乌苏市\",\n\t \"654221\": \"额敏县\",\n\t \"654223\": \"沙湾县\",\n\t \"654224\": \"托里县\",\n\t \"654225\": \"裕民县\",\n\t \"654226\": \"和布克赛尔蒙古自治县\",\n\t \"654227\": \"其它区\",\n\t \"654300\": \"阿勒泰地区\",\n\t \"654301\": \"阿勒泰市\",\n\t \"654321\": \"布尔津县\",\n\t \"654322\": \"富蕴县\",\n\t \"654323\": \"福海县\",\n\t \"654324\": \"哈巴河县\",\n\t \"654325\": \"青河县\",\n\t \"654326\": \"吉木乃县\",\n\t \"654327\": \"其它区\",\n\t \"659001\": \"石河子市\",\n\t \"659002\": \"阿拉尔市\",\n\t \"659003\": \"图木舒克市\",\n\t \"659004\": \"五家渠市\",\n\t \"710000\": \"台湾\",\n\t \"710100\": \"台北市\",\n\t \"710101\": \"中正区\",\n\t \"710102\": \"大同区\",\n\t \"710103\": \"中山区\",\n\t \"710104\": \"松山区\",\n\t \"710105\": \"大安区\",\n\t \"710106\": \"万华区\",\n\t \"710107\": \"信义区\",\n\t \"710108\": \"士林区\",\n\t \"710109\": \"北投区\",\n\t \"710110\": \"内湖区\",\n\t \"710111\": \"南港区\",\n\t \"710112\": \"文山区\",\n\t \"710113\": \"其它区\",\n\t \"710200\": \"高雄市\",\n\t \"710201\": \"新兴区\",\n\t \"710202\": \"前金区\",\n\t \"710203\": \"芩雅区\",\n\t \"710204\": \"盐埕区\",\n\t \"710205\": \"鼓山区\",\n\t \"710206\": \"旗津区\",\n\t \"710207\": \"前镇区\",\n\t \"710208\": \"三民区\",\n\t \"710209\": \"左营区\",\n\t \"710210\": \"楠梓区\",\n\t \"710211\": \"小港区\",\n\t \"710212\": \"其它区\",\n\t \"710241\": \"苓雅区\",\n\t \"710242\": \"仁武区\",\n\t \"710243\": \"大社区\",\n\t \"710244\": \"冈山区\",\n\t \"710245\": \"路竹区\",\n\t \"710246\": \"阿莲区\",\n\t \"710247\": \"田寮区\",\n\t \"710248\": \"燕巢区\",\n\t \"710249\": \"桥头区\",\n\t \"710250\": \"梓官区\",\n\t \"710251\": \"弥陀区\",\n\t \"710252\": \"永安区\",\n\t \"710253\": \"湖内区\",\n\t \"710254\": \"凤山区\",\n\t \"710255\": \"大寮区\",\n\t \"710256\": \"林园区\",\n\t \"710257\": \"鸟松区\",\n\t \"710258\": \"大树区\",\n\t \"710259\": \"旗山区\",\n\t \"710260\": \"美浓区\",\n\t \"710261\": \"六龟区\",\n\t \"710262\": \"内门区\",\n\t \"710263\": \"杉林区\",\n\t \"710264\": \"甲仙区\",\n\t \"710265\": \"桃源区\",\n\t \"710266\": \"那玛夏区\",\n\t \"710267\": \"茂林区\",\n\t \"710268\": \"茄萣区\",\n\t \"710300\": \"台南市\",\n\t \"710301\": \"中西区\",\n\t \"710302\": \"东区\",\n\t \"710303\": \"南区\",\n\t \"710304\": \"北区\",\n\t \"710305\": \"安平区\",\n\t \"710306\": \"安南区\",\n\t \"710307\": \"其它区\",\n\t \"710339\": \"永康区\",\n\t \"710340\": \"归仁区\",\n\t \"710341\": \"新化区\",\n\t \"710342\": \"左镇区\",\n\t \"710343\": \"玉井区\",\n\t \"710344\": \"楠西区\",\n\t \"710345\": \"南化区\",\n\t \"710346\": \"仁德区\",\n\t \"710347\": \"关庙区\",\n\t \"710348\": \"龙崎区\",\n\t \"710349\": \"官田区\",\n\t \"710350\": \"麻豆区\",\n\t \"710351\": \"佳里区\",\n\t \"710352\": \"西港区\",\n\t \"710353\": \"七股区\",\n\t \"710354\": \"将军区\",\n\t \"710355\": \"学甲区\",\n\t \"710356\": \"北门区\",\n\t \"710357\": \"新营区\",\n\t \"710358\": \"后壁区\",\n\t \"710359\": \"白河区\",\n\t \"710360\": \"东山区\",\n\t \"710361\": \"六甲区\",\n\t \"710362\": \"下营区\",\n\t \"710363\": \"柳营区\",\n\t \"710364\": \"盐水区\",\n\t \"710365\": \"善化区\",\n\t \"710366\": \"大内区\",\n\t \"710367\": \"山上区\",\n\t \"710368\": \"新市区\",\n\t \"710369\": \"安定区\",\n\t \"710400\": \"台中市\",\n\t \"710401\": \"中区\",\n\t \"710402\": \"东区\",\n\t \"710403\": \"南区\",\n\t \"710404\": \"西区\",\n\t \"710405\": \"北区\",\n\t \"710406\": \"北屯区\",\n\t \"710407\": \"西屯区\",\n\t \"710408\": \"南屯区\",\n\t \"710409\": \"其它区\",\n\t \"710431\": \"太平区\",\n\t \"710432\": \"大里区\",\n\t \"710433\": \"雾峰区\",\n\t \"710434\": \"乌日区\",\n\t \"710435\": \"丰原区\",\n\t \"710436\": \"后里区\",\n\t \"710437\": \"石冈区\",\n\t \"710438\": \"东势区\",\n\t \"710439\": \"和平区\",\n\t \"710440\": \"新社区\",\n\t \"710441\": \"潭子区\",\n\t \"710442\": \"大雅区\",\n\t \"710443\": \"神冈区\",\n\t \"710444\": \"大肚区\",\n\t \"710445\": \"沙鹿区\",\n\t \"710446\": \"龙井区\",\n\t \"710447\": \"梧栖区\",\n\t \"710448\": \"清水区\",\n\t \"710449\": \"大甲区\",\n\t \"710450\": \"外埔区\",\n\t \"710451\": \"大安区\",\n\t \"710500\": \"金门县\",\n\t \"710507\": \"金沙镇\",\n\t \"710508\": \"金湖镇\",\n\t \"710509\": \"金宁乡\",\n\t \"710510\": \"金城镇\",\n\t \"710511\": \"烈屿乡\",\n\t \"710512\": \"乌坵乡\",\n\t \"710600\": \"南投县\",\n\t \"710614\": \"南投市\",\n\t \"710615\": \"中寮乡\",\n\t \"710616\": \"草屯镇\",\n\t \"710617\": \"国姓乡\",\n\t \"710618\": \"埔里镇\",\n\t \"710619\": \"仁爱乡\",\n\t \"710620\": \"名间乡\",\n\t \"710621\": \"集集镇\",\n\t \"710622\": \"水里乡\",\n\t \"710623\": \"鱼池乡\",\n\t \"710624\": \"信义乡\",\n\t \"710625\": \"竹山镇\",\n\t \"710626\": \"鹿谷乡\",\n\t \"710700\": \"基隆市\",\n\t \"710701\": \"仁爱区\",\n\t \"710702\": \"信义区\",\n\t \"710703\": \"中正区\",\n\t \"710704\": \"中山区\",\n\t \"710705\": \"安乐区\",\n\t \"710706\": \"暖暖区\",\n\t \"710707\": \"七堵区\",\n\t \"710708\": \"其它区\",\n\t \"710800\": \"新竹市\",\n\t \"710801\": \"东区\",\n\t \"710802\": \"北区\",\n\t \"710803\": \"香山区\",\n\t \"710804\": \"其它区\",\n\t \"710900\": \"嘉义市\",\n\t \"710901\": \"东区\",\n\t \"710902\": \"西区\",\n\t \"710903\": \"其它区\",\n\t \"711100\": \"新北市\",\n\t \"711130\": \"万里区\",\n\t \"711131\": \"金山区\",\n\t \"711132\": \"板桥区\",\n\t \"711133\": \"汐止区\",\n\t \"711134\": \"深坑区\",\n\t \"711135\": \"石碇区\",\n\t \"711136\": \"瑞芳区\",\n\t \"711137\": \"平溪区\",\n\t \"711138\": \"双溪区\",\n\t \"711139\": \"贡寮区\",\n\t \"711140\": \"新店区\",\n\t \"711141\": \"坪林区\",\n\t \"711142\": \"乌来区\",\n\t \"711143\": \"永和区\",\n\t \"711144\": \"中和区\",\n\t \"711145\": \"土城区\",\n\t \"711146\": \"三峡区\",\n\t \"711147\": \"树林区\",\n\t \"711148\": \"莺歌区\",\n\t \"711149\": \"三重区\",\n\t \"711150\": \"新庄区\",\n\t \"711151\": \"泰山区\",\n\t \"711152\": \"林口区\",\n\t \"711153\": \"芦洲区\",\n\t \"711154\": \"五股区\",\n\t \"711155\": \"八里区\",\n\t \"711156\": \"淡水区\",\n\t \"711157\": \"三芝区\",\n\t \"711158\": \"石门区\",\n\t \"711200\": \"宜兰县\",\n\t \"711214\": \"宜兰市\",\n\t \"711215\": \"头城镇\",\n\t \"711216\": \"礁溪乡\",\n\t \"711217\": \"壮围乡\",\n\t \"711218\": \"员山乡\",\n\t \"711219\": \"罗东镇\",\n\t \"711220\": \"三星乡\",\n\t \"711221\": \"大同乡\",\n\t \"711222\": \"五结乡\",\n\t \"711223\": \"冬山乡\",\n\t \"711224\": \"苏澳镇\",\n\t \"711225\": \"南澳乡\",\n\t \"711226\": \"钓鱼台\",\n\t \"711300\": \"新竹县\",\n\t \"711314\": \"竹北市\",\n\t \"711315\": \"湖口乡\",\n\t \"711316\": \"新丰乡\",\n\t \"711317\": \"新埔镇\",\n\t \"711318\": \"关西镇\",\n\t \"711319\": \"芎林乡\",\n\t \"711320\": \"宝山乡\",\n\t \"711321\": \"竹东镇\",\n\t \"711322\": \"五峰乡\",\n\t \"711323\": \"横山乡\",\n\t \"711324\": \"尖石乡\",\n\t \"711325\": \"北埔乡\",\n\t \"711326\": \"峨眉乡\",\n\t \"711400\": \"桃园县\",\n\t \"711414\": \"中坜市\",\n\t \"711415\": \"平镇市\",\n\t \"711416\": \"龙潭乡\",\n\t \"711417\": \"杨梅市\",\n\t \"711418\": \"新屋乡\",\n\t \"711419\": \"观音乡\",\n\t \"711420\": \"桃园市\",\n\t \"711421\": \"龟山乡\",\n\t \"711422\": \"八德市\",\n\t \"711423\": \"大溪镇\",\n\t \"711424\": \"复兴乡\",\n\t \"711425\": \"大园乡\",\n\t \"711426\": \"芦竹乡\",\n\t \"711500\": \"苗栗县\",\n\t \"711519\": \"竹南镇\",\n\t \"711520\": \"头份镇\",\n\t \"711521\": \"三湾乡\",\n\t \"711522\": \"南庄乡\",\n\t \"711523\": \"狮潭乡\",\n\t \"711524\": \"后龙镇\",\n\t \"711525\": \"通霄镇\",\n\t \"711526\": \"苑里镇\",\n\t \"711527\": \"苗栗市\",\n\t \"711528\": \"造桥乡\",\n\t \"711529\": \"头屋乡\",\n\t \"711530\": \"公馆乡\",\n\t \"711531\": \"大湖乡\",\n\t \"711532\": \"泰安乡\",\n\t \"711533\": \"铜锣乡\",\n\t \"711534\": \"三义乡\",\n\t \"711535\": \"西湖乡\",\n\t \"711536\": \"卓兰镇\",\n\t \"711700\": \"彰化县\",\n\t \"711727\": \"彰化市\",\n\t \"711728\": \"芬园乡\",\n\t \"711729\": \"花坛乡\",\n\t \"711730\": \"秀水乡\",\n\t \"711731\": \"鹿港镇\",\n\t \"711732\": \"福兴乡\",\n\t \"711733\": \"线西乡\",\n\t \"711734\": \"和美镇\",\n\t \"711735\": \"伸港乡\",\n\t \"711736\": \"员林镇\",\n\t \"711737\": \"社头乡\",\n\t \"711738\": \"永靖乡\",\n\t \"711739\": \"埔心乡\",\n\t \"711740\": \"溪湖镇\",\n\t \"711741\": \"大村乡\",\n\t \"711742\": \"埔盐乡\",\n\t \"711743\": \"田中镇\",\n\t \"711744\": \"北斗镇\",\n\t \"711745\": \"田尾乡\",\n\t \"711746\": \"埤头乡\",\n\t \"711747\": \"溪州乡\",\n\t \"711748\": \"竹塘乡\",\n\t \"711749\": \"二林镇\",\n\t \"711750\": \"大城乡\",\n\t \"711751\": \"芳苑乡\",\n\t \"711752\": \"二水乡\",\n\t \"711900\": \"嘉义县\",\n\t \"711919\": \"番路乡\",\n\t \"711920\": \"梅山乡\",\n\t \"711921\": \"竹崎乡\",\n\t \"711922\": \"阿里山乡\",\n\t \"711923\": \"中埔乡\",\n\t \"711924\": \"大埔乡\",\n\t \"711925\": \"水上乡\",\n\t \"711926\": \"鹿草乡\",\n\t \"711927\": \"太保市\",\n\t \"711928\": \"朴子市\",\n\t \"711929\": \"东石乡\",\n\t \"711930\": \"六脚乡\",\n\t \"711931\": \"新港乡\",\n\t \"711932\": \"民雄乡\",\n\t \"711933\": \"大林镇\",\n\t \"711934\": \"溪口乡\",\n\t \"711935\": \"义竹乡\",\n\t \"711936\": \"布袋镇\",\n\t \"712100\": \"云林县\",\n\t \"712121\": \"斗南镇\",\n\t \"712122\": \"大埤乡\",\n\t \"712123\": \"虎尾镇\",\n\t \"712124\": \"土库镇\",\n\t \"712125\": \"褒忠乡\",\n\t \"712126\": \"东势乡\",\n\t \"712127\": \"台西乡\",\n\t \"712128\": \"仑背乡\",\n\t \"712129\": \"麦寮乡\",\n\t \"712130\": \"斗六市\",\n\t \"712131\": \"林内乡\",\n\t \"712132\": \"古坑乡\",\n\t \"712133\": \"莿桐乡\",\n\t \"712134\": \"西螺镇\",\n\t \"712135\": \"二仑乡\",\n\t \"712136\": \"北港镇\",\n\t \"712137\": \"水林乡\",\n\t \"712138\": \"口湖乡\",\n\t \"712139\": \"四湖乡\",\n\t \"712140\": \"元长乡\",\n\t \"712400\": \"屏东县\",\n\t \"712434\": \"屏东市\",\n\t \"712435\": \"三地门乡\",\n\t \"712436\": \"雾台乡\",\n\t \"712437\": \"玛家乡\",\n\t \"712438\": \"九如乡\",\n\t \"712439\": \"里港乡\",\n\t \"712440\": \"高树乡\",\n\t \"712441\": \"盐埔乡\",\n\t \"712442\": \"长治乡\",\n\t \"712443\": \"麟洛乡\",\n\t \"712444\": \"竹田乡\",\n\t \"712445\": \"内埔乡\",\n\t \"712446\": \"万丹乡\",\n\t \"712447\": \"潮州镇\",\n\t \"712448\": \"泰武乡\",\n\t \"712449\": \"来义乡\",\n\t \"712450\": \"万峦乡\",\n\t \"712451\": \"崁顶乡\",\n\t \"712452\": \"新埤乡\",\n\t \"712453\": \"南州乡\",\n\t \"712454\": \"林边乡\",\n\t \"712455\": \"东港镇\",\n\t \"712456\": \"琉球乡\",\n\t \"712457\": \"佳冬乡\",\n\t \"712458\": \"新园乡\",\n\t \"712459\": \"枋寮乡\",\n\t \"712460\": \"枋山乡\",\n\t \"712461\": \"春日乡\",\n\t \"712462\": \"狮子乡\",\n\t \"712463\": \"车城乡\",\n\t \"712464\": \"牡丹乡\",\n\t \"712465\": \"恒春镇\",\n\t \"712466\": \"满州乡\",\n\t \"712500\": \"台东县\",\n\t \"712517\": \"台东市\",\n\t \"712518\": \"绿岛乡\",\n\t \"712519\": \"兰屿乡\",\n\t \"712520\": \"延平乡\",\n\t \"712521\": \"卑南乡\",\n\t \"712522\": \"鹿野乡\",\n\t \"712523\": \"关山镇\",\n\t \"712524\": \"海端乡\",\n\t \"712525\": \"池上乡\",\n\t \"712526\": \"东河乡\",\n\t \"712527\": \"成功镇\",\n\t \"712528\": \"长滨乡\",\n\t \"712529\": \"金峰乡\",\n\t \"712530\": \"大武乡\",\n\t \"712531\": \"达仁乡\",\n\t \"712532\": \"太麻里乡\",\n\t \"712600\": \"花莲县\",\n\t \"712615\": \"花莲市\",\n\t \"712616\": \"新城乡\",\n\t \"712617\": \"太鲁阁\",\n\t \"712618\": \"秀林乡\",\n\t \"712619\": \"吉安乡\",\n\t \"712620\": \"寿丰乡\",\n\t \"712621\": \"凤林镇\",\n\t \"712622\": \"光复乡\",\n\t \"712623\": \"丰滨乡\",\n\t \"712624\": \"瑞穗乡\",\n\t \"712625\": \"万荣乡\",\n\t \"712626\": \"玉里镇\",\n\t \"712627\": \"卓溪乡\",\n\t \"712628\": \"富里乡\",\n\t \"712700\": \"澎湖县\",\n\t \"712707\": \"马公市\",\n\t \"712708\": \"西屿乡\",\n\t \"712709\": \"望安乡\",\n\t \"712710\": \"七美乡\",\n\t \"712711\": \"白沙乡\",\n\t \"712712\": \"湖西乡\",\n\t \"712800\": \"连江县\",\n\t \"712805\": \"南竿乡\",\n\t \"712806\": \"北竿乡\",\n\t \"712807\": \"莒光乡\",\n\t \"712808\": \"东引乡\",\n\t \"810000\": \"香港特别行政区\",\n\t \"810100\": \"香港岛\",\n\t \"810101\": \"中西区\",\n\t \"810102\": \"湾仔\",\n\t \"810103\": \"东区\",\n\t \"810104\": \"南区\",\n\t \"810200\": \"九龙\",\n\t \"810201\": \"九龙城区\",\n\t \"810202\": \"油尖旺区\",\n\t \"810203\": \"深水埗区\",\n\t \"810204\": \"黄大仙区\",\n\t \"810205\": \"观塘区\",\n\t \"810300\": \"新界\",\n\t \"810301\": \"北区\",\n\t \"810302\": \"大埔区\",\n\t \"810303\": \"沙田区\",\n\t \"810304\": \"西贡区\",\n\t \"810305\": \"元朗区\",\n\t \"810306\": \"屯门区\",\n\t \"810307\": \"荃湾区\",\n\t \"810308\": \"葵青区\",\n\t \"810309\": \"离岛区\",\n\t \"820000\": \"澳门特别行政区\",\n\t \"820100\": \"澳门半岛\",\n\t \"820200\": \"离岛\",\n\t \"990000\": \"海外\",\n\t \"990100\": \"海外\"\n\t}\n\n\t// id pid/parentId name children\n\tfunction tree(list) {\n\t var mapped = {}\n\t for (var i = 0, item; i < list.length; i++) {\n\t item = list[i]\n\t if (!item || !item.id) continue\n\t mapped[item.id] = item\n\t }\n\n\t var result = []\n\t for (var ii = 0; ii < list.length; ii++) {\n\t item = list[ii]\n\n\t if (!item) continue\n\t /* jshint -W041 */\n\t if (item.pid == undefined && item.parentId == undefined) {\n\t result.push(item)\n\t continue\n\t }\n\t var parent = mapped[item.pid] || mapped[item.parentId]\n\t if (!parent) continue\n\t if (!parent.children) parent.children = []\n\t parent.children.push(item)\n\t }\n\t return result\n\t}\n\n\tvar DICT_FIXED = function() {\n\t var fixed = []\n\t for (var id in DICT) {\n\t var pid = id.slice(2, 6) === '0000' ? undefined :\n\t id.slice(4, 6) == '00' ? (id.slice(0, 2) + '0000') :\n\t id.slice(0, 4) + '00'\n\t fixed.push({\n\t id: id,\n\t pid: pid,\n\t name: DICT[id]\n\t })\n\t }\n\t return tree(fixed)\n\t}()\n\n\tmodule.exports = DICT_FIXED\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## Miscellaneous\n\t*/\n\tvar DICT = __webpack_require__(18)\n\tmodule.exports = {\n\t\t// Dice\n\t\td4: function() {\n\t\t\treturn this.natural(1, 4)\n\t\t},\n\t\td6: function() {\n\t\t\treturn this.natural(1, 6)\n\t\t},\n\t\td8: function() {\n\t\t\treturn this.natural(1, 8)\n\t\t},\n\t\td12: function() {\n\t\t\treturn this.natural(1, 12)\n\t\t},\n\t\td20: function() {\n\t\t\treturn this.natural(1, 20)\n\t\t},\n\t\td100: function() {\n\t\t\treturn this.natural(1, 100)\n\t\t},\n\t\t/*\n\t\t 随机生成一个 GUID。\n\n\t\t http://www.broofa.com/2008/09/javascript-uuid-function/\n\t\t [UUID 规范](http://www.ietf.org/rfc/rfc4122.txt)\n\t\t UUIDs (Universally Unique IDentifier)\n\t\t GUIDs (Globally Unique IDentifier)\n\t\t The formal definition of the UUID string representation is provided by the following ABNF [7]:\n\t\t UUID = time-low \"-\" time-mid \"-\"\n\t\t time-high-and-version \"-\"\n\t\t clock-seq-and-reserved\n\t\t clock-seq-low \"-\" node\n\t\t time-low = 4hexOctet\n\t\t time-mid = 2hexOctet\n\t\t time-high-and-version = 2hexOctet\n\t\t clock-seq-and-reserved = hexOctet\n\t\t clock-seq-low = hexOctet\n\t\t node = 6hexOctet\n\t\t hexOctet = hexDigit hexDigit\n\t\t hexDigit =\n\t\t \"0\" / \"1\" / \"2\" / \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" /\n\t\t \"a\" / \"b\" / \"c\" / \"d\" / \"e\" / \"f\" /\n\t\t \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\n\t\t \n\t\t https://github.com/victorquinn/chancejs/blob/develop/chance.js#L1349\n\t\t*/\n\t\tguid: function() {\n\t\t\tvar pool = \"abcdefABCDEF1234567890\",\n\t\t\t\tguid = this.string(pool, 8) + '-' +\n\t\t\t\tthis.string(pool, 4) + '-' +\n\t\t\t\tthis.string(pool, 4) + '-' +\n\t\t\t\tthis.string(pool, 4) + '-' +\n\t\t\t\tthis.string(pool, 12);\n\t\t\treturn guid\n\t\t},\n\t\tuuid: function() {\n\t\t\treturn this.guid()\n\t\t},\n\t\t/*\n\t\t 随机生成一个 18 位身份证。\n\n\t\t [身份证](http://baike.baidu.com/view/1697.htm#4)\n\t\t 地址码 6 + 出生日期码 8 + 顺序码 3 + 校验码 1\n\t\t [《中华人民共和国行政区划代码》国家标准(GB/T2260)](http://zhidao.baidu.com/question/1954561.html)\n\t\t*/\n\t\tid: function() {\n\t\t\tvar id,\n\t\t\t\tsum = 0,\n\t\t\t\trank = [\n\t\t\t\t\t\"7\", \"9\", \"10\", \"5\", \"8\", \"4\", \"2\", \"1\", \"6\", \"3\", \"7\", \"9\", \"10\", \"5\", \"8\", \"4\", \"2\"\n\t\t\t\t],\n\t\t\t\tlast = [\n\t\t\t\t\t\"1\", \"0\", \"X\", \"9\", \"8\", \"7\", \"6\", \"5\", \"4\", \"3\", \"2\"\n\t\t\t\t]\n\n\t\t\tid = this.pick(DICT).id +\n\t\t\t\tthis.date('yyyyMMdd') +\n\t\t\t\tthis.string('number', 3)\n\n\t\t\tfor (var i = 0; i < id.length; i++) {\n\t\t\t\tsum += id[i] * rank[i];\n\t\t\t}\n\t\t\tid += last[sum % 11];\n\n\t\t\treturn id\n\t\t},\n\n\t\t/*\n\t\t 生成一个全局的自增整数。\n\t\t 类似自增主键(auto increment primary key)。\n\t\t*/\n\t\tincrement: function() {\n\t\t\tvar key = 0\n\t\t\treturn function(step) {\n\t\t\t\treturn key += (+step || 1) // step?\n\t\t\t}\n\t\t}(),\n\t\tinc: function(step) {\n\t\t\treturn this.increment(step)\n\t\t}\n\t}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Parser = __webpack_require__(21)\n\tvar Handler = __webpack_require__(22)\n\tmodule.exports = {\n\t\tParser: Parser,\n\t\tHandler: Handler\n\t}\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\n\t// https://github.com/nuysoft/regexp\n\t// forked from https://github.com/ForbesLindesay/regexp\n\n\tfunction parse(n) {\n\t if (\"string\" != typeof n) {\n\t var l = new TypeError(\"The regexp to parse must be represented as a string.\");\n\t throw l;\n\t }\n\t return index = 1, cgs = {}, parser.parse(n);\n\t}\n\n\tfunction Token(n) {\n\t this.type = n, this.offset = Token.offset(), this.text = Token.text();\n\t}\n\n\tfunction Alternate(n, l) {\n\t Token.call(this, \"alternate\"), this.left = n, this.right = l;\n\t}\n\n\tfunction Match(n) {\n\t Token.call(this, \"match\"), this.body = n.filter(Boolean);\n\t}\n\n\tfunction Group(n, l) {\n\t Token.call(this, n), this.body = l;\n\t}\n\n\tfunction CaptureGroup(n) {\n\t Group.call(this, \"capture-group\"), this.index = cgs[this.offset] || (cgs[this.offset] = index++), \n\t this.body = n;\n\t}\n\n\tfunction Quantified(n, l) {\n\t Token.call(this, \"quantified\"), this.body = n, this.quantifier = l;\n\t}\n\n\tfunction Quantifier(n, l) {\n\t Token.call(this, \"quantifier\"), this.min = n, this.max = l, this.greedy = !0;\n\t}\n\n\tfunction CharSet(n, l) {\n\t Token.call(this, \"charset\"), this.invert = n, this.body = l;\n\t}\n\n\tfunction CharacterRange(n, l) {\n\t Token.call(this, \"range\"), this.start = n, this.end = l;\n\t}\n\n\tfunction Literal(n) {\n\t Token.call(this, \"literal\"), this.body = n, this.escaped = this.body != this.text;\n\t}\n\n\tfunction Unicode(n) {\n\t Token.call(this, \"unicode\"), this.code = n.toUpperCase();\n\t}\n\n\tfunction Hex(n) {\n\t Token.call(this, \"hex\"), this.code = n.toUpperCase();\n\t}\n\n\tfunction Octal(n) {\n\t Token.call(this, \"octal\"), this.code = n.toUpperCase();\n\t}\n\n\tfunction BackReference(n) {\n\t Token.call(this, \"back-reference\"), this.code = n.toUpperCase();\n\t}\n\n\tfunction ControlCharacter(n) {\n\t Token.call(this, \"control-character\"), this.code = n.toUpperCase();\n\t}\n\n\tvar parser = function() {\n\t function n(n, l) {\n\t function u() {\n\t this.constructor = n;\n\t }\n\t u.prototype = l.prototype, n.prototype = new u();\n\t }\n\t function l(n, l, u, t, r) {\n\t function e(n, l) {\n\t function u(n) {\n\t function l(n) {\n\t return n.charCodeAt(0).toString(16).toUpperCase();\n\t }\n\t return n.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\x08/g, \"\\\\b\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\f/g, \"\\\\f\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(n) {\n\t return \"\\\\x0\" + l(n);\n\t }).replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(n) {\n\t return \"\\\\x\" + l(n);\n\t }).replace(/[\\u0180-\\u0FFF]/g, function(n) {\n\t return \"\\\\u0\" + l(n);\n\t }).replace(/[\\u1080-\\uFFFF]/g, function(n) {\n\t return \"\\\\u\" + l(n);\n\t });\n\t }\n\t var t, r;\n\t switch (n.length) {\n\t case 0:\n\t t = \"end of input\";\n\t break;\n\n\t case 1:\n\t t = n[0];\n\t break;\n\n\t default:\n\t t = n.slice(0, -1).join(\", \") + \" or \" + n[n.length - 1];\n\t }\n\t return r = l ? '\"' + u(l) + '\"' : \"end of input\", \"Expected \" + t + \" but \" + r + \" found.\";\n\t }\n\t this.expected = n, this.found = l, this.offset = u, this.line = t, this.column = r, \n\t this.name = \"SyntaxError\", this.message = e(n, l);\n\t }\n\t function u(n) {\n\t function u() {\n\t return n.substring(Lt, qt);\n\t }\n\t function t() {\n\t return Lt;\n\t }\n\t function r(l) {\n\t function u(l, u, t) {\n\t var r, e;\n\t for (r = u; t > r; r++) e = n.charAt(r), \"\\n\" === e ? (l.seenCR || l.line++, l.column = 1, \n\t l.seenCR = !1) : \"\\r\" === e || \"\\u2028\" === e || \"\\u2029\" === e ? (l.line++, l.column = 1, \n\t l.seenCR = !0) : (l.column++, l.seenCR = !1);\n\t }\n\t return Mt !== l && (Mt > l && (Mt = 0, Dt = {\n\t line: 1,\n\t column: 1,\n\t seenCR: !1\n\t }), u(Dt, Mt, l), Mt = l), Dt;\n\t }\n\t function e(n) {\n\t Ht > qt || (qt > Ht && (Ht = qt, Ot = []), Ot.push(n));\n\t }\n\t function o(n) {\n\t var l = 0;\n\t for (n.sort(); l < n.length; ) n[l - 1] === n[l] ? n.splice(l, 1) : l++;\n\t }\n\t function c() {\n\t var l, u, t, r, o;\n\t return l = qt, u = i(), null !== u ? (t = qt, 124 === n.charCodeAt(qt) ? (r = fl, \n\t qt++) : (r = null, 0 === Wt && e(sl)), null !== r ? (o = c(), null !== o ? (r = [ r, o ], \n\t t = r) : (qt = t, t = il)) : (qt = t, t = il), null === t && (t = al), null !== t ? (Lt = l, \n\t u = hl(u, t), null === u ? (qt = l, l = u) : l = u) : (qt = l, l = il)) : (qt = l, \n\t l = il), l;\n\t }\n\t function i() {\n\t var n, l, u, t, r;\n\t if (n = qt, l = f(), null === l && (l = al), null !== l) if (u = qt, Wt++, t = d(), \n\t Wt--, null === t ? u = al : (qt = u, u = il), null !== u) {\n\t for (t = [], r = h(), null === r && (r = a()); null !== r; ) t.push(r), r = h(), \n\t null === r && (r = a());\n\t null !== t ? (r = s(), null === r && (r = al), null !== r ? (Lt = n, l = dl(l, t, r), \n\t null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n, n = il);\n\t } else qt = n, n = il; else qt = n, n = il;\n\t return n;\n\t }\n\t function a() {\n\t var n;\n\t return n = x(), null === n && (n = Q(), null === n && (n = B())), n;\n\t }\n\t function f() {\n\t var l, u;\n\t return l = qt, 94 === n.charCodeAt(qt) ? (u = pl, qt++) : (u = null, 0 === Wt && e(vl)), \n\t null !== u && (Lt = l, u = wl()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function s() {\n\t var l, u;\n\t return l = qt, 36 === n.charCodeAt(qt) ? (u = Al, qt++) : (u = null, 0 === Wt && e(Cl)), \n\t null !== u && (Lt = l, u = gl()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function h() {\n\t var n, l, u;\n\t return n = qt, l = a(), null !== l ? (u = d(), null !== u ? (Lt = n, l = bl(l, u), \n\t null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n, n = il), n;\n\t }\n\t function d() {\n\t var n, l, u;\n\t return Wt++, n = qt, l = p(), null !== l ? (u = k(), null === u && (u = al), null !== u ? (Lt = n, \n\t l = Tl(l, u), null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n, \n\t n = il), Wt--, null === n && (l = null, 0 === Wt && e(kl)), n;\n\t }\n\t function p() {\n\t var n;\n\t return n = v(), null === n && (n = w(), null === n && (n = A(), null === n && (n = C(), \n\t null === n && (n = g(), null === n && (n = b()))))), n;\n\t }\n\t function v() {\n\t var l, u, t, r, o, c;\n\t return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)), \n\t null !== u ? (t = T(), null !== t ? (44 === n.charCodeAt(qt) ? (r = ml, qt++) : (r = null, \n\t 0 === Wt && e(Rl)), null !== r ? (o = T(), null !== o ? (125 === n.charCodeAt(qt) ? (c = Fl, \n\t qt++) : (c = null, 0 === Wt && e(Ql)), null !== c ? (Lt = l, u = Sl(t, o), null === u ? (qt = l, \n\t l = u) : l = u) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function w() {\n\t var l, u, t, r;\n\t return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)), \n\t null !== u ? (t = T(), null !== t ? (n.substr(qt, 2) === Ul ? (r = Ul, qt += 2) : (r = null, \n\t 0 === Wt && e(El)), null !== r ? (Lt = l, u = Gl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;\n\t }\n\t function A() {\n\t var l, u, t, r;\n\t return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)), \n\t null !== u ? (t = T(), null !== t ? (125 === n.charCodeAt(qt) ? (r = Fl, qt++) : (r = null, \n\t 0 === Wt && e(Ql)), null !== r ? (Lt = l, u = Bl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;\n\t }\n\t function C() {\n\t var l, u;\n\t return l = qt, 43 === n.charCodeAt(qt) ? (u = jl, qt++) : (u = null, 0 === Wt && e($l)), \n\t null !== u && (Lt = l, u = ql()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function g() {\n\t var l, u;\n\t return l = qt, 42 === n.charCodeAt(qt) ? (u = Ll, qt++) : (u = null, 0 === Wt && e(Ml)), \n\t null !== u && (Lt = l, u = Dl()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function b() {\n\t var l, u;\n\t return l = qt, 63 === n.charCodeAt(qt) ? (u = Hl, qt++) : (u = null, 0 === Wt && e(Ol)), \n\t null !== u && (Lt = l, u = Wl()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function k() {\n\t var l;\n\t return 63 === n.charCodeAt(qt) ? (l = Hl, qt++) : (l = null, 0 === Wt && e(Ol)), \n\t l;\n\t }\n\t function T() {\n\t var l, u, t;\n\t if (l = qt, u = [], zl.test(n.charAt(qt)) ? (t = n.charAt(qt), qt++) : (t = null, \n\t 0 === Wt && e(Il)), null !== t) for (;null !== t; ) u.push(t), zl.test(n.charAt(qt)) ? (t = n.charAt(qt), \n\t qt++) : (t = null, 0 === Wt && e(Il)); else u = il;\n\t return null !== u && (Lt = l, u = Jl(u)), null === u ? (qt = l, l = u) : l = u, \n\t l;\n\t }\n\t function x() {\n\t var l, u, t, r;\n\t return l = qt, 40 === n.charCodeAt(qt) ? (u = Kl, qt++) : (u = null, 0 === Wt && e(Nl)), \n\t null !== u ? (t = R(), null === t && (t = F(), null === t && (t = m(), null === t && (t = y()))), \n\t null !== t ? (41 === n.charCodeAt(qt) ? (r = Pl, qt++) : (r = null, 0 === Wt && e(Vl)), \n\t null !== r ? (Lt = l, u = Xl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;\n\t }\n\t function y() {\n\t var n, l;\n\t return n = qt, l = c(), null !== l && (Lt = n, l = Yl(l)), null === l ? (qt = n, \n\t n = l) : n = l, n;\n\t }\n\t function m() {\n\t var l, u, t;\n\t return l = qt, n.substr(qt, 2) === Zl ? (u = Zl, qt += 2) : (u = null, 0 === Wt && e(_l)), \n\t null !== u ? (t = c(), null !== t ? (Lt = l, u = nu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function R() {\n\t var l, u, t;\n\t return l = qt, n.substr(qt, 2) === lu ? (u = lu, qt += 2) : (u = null, 0 === Wt && e(uu)), \n\t null !== u ? (t = c(), null !== t ? (Lt = l, u = tu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function F() {\n\t var l, u, t;\n\t return l = qt, n.substr(qt, 2) === ru ? (u = ru, qt += 2) : (u = null, 0 === Wt && e(eu)), \n\t null !== u ? (t = c(), null !== t ? (Lt = l, u = ou(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function Q() {\n\t var l, u, t, r, o;\n\t if (Wt++, l = qt, 91 === n.charCodeAt(qt) ? (u = iu, qt++) : (u = null, 0 === Wt && e(au)), \n\t null !== u) if (94 === n.charCodeAt(qt) ? (t = pl, qt++) : (t = null, 0 === Wt && e(vl)), \n\t null === t && (t = al), null !== t) {\n\t for (r = [], o = S(), null === o && (o = U()); null !== o; ) r.push(o), o = S(), \n\t null === o && (o = U());\n\t null !== r ? (93 === n.charCodeAt(qt) ? (o = fu, qt++) : (o = null, 0 === Wt && e(su)), \n\t null !== o ? (Lt = l, u = hu(t, r), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il);\n\t } else qt = l, l = il; else qt = l, l = il;\n\t return Wt--, null === l && (u = null, 0 === Wt && e(cu)), l;\n\t }\n\t function S() {\n\t var l, u, t, r;\n\t return Wt++, l = qt, u = U(), null !== u ? (45 === n.charCodeAt(qt) ? (t = pu, qt++) : (t = null, \n\t 0 === Wt && e(vu)), null !== t ? (r = U(), null !== r ? (Lt = l, u = wu(u, r), null === u ? (qt = l, \n\t l = u) : l = u) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l, l = il), Wt--, \n\t null === l && (u = null, 0 === Wt && e(du)), l;\n\t }\n\t function U() {\n\t var n, l;\n\t return Wt++, n = G(), null === n && (n = E()), Wt--, null === n && (l = null, 0 === Wt && e(Au)), \n\t n;\n\t }\n\t function E() {\n\t var l, u;\n\t return l = qt, Cu.test(n.charAt(qt)) ? (u = n.charAt(qt), qt++) : (u = null, 0 === Wt && e(gu)), \n\t null !== u && (Lt = l, u = bu(u)), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function G() {\n\t var n;\n\t return n = L(), null === n && (n = Y(), null === n && (n = H(), null === n && (n = O(), \n\t null === n && (n = W(), null === n && (n = z(), null === n && (n = I(), null === n && (n = J(), \n\t null === n && (n = K(), null === n && (n = N(), null === n && (n = P(), null === n && (n = V(), \n\t null === n && (n = X(), null === n && (n = _(), null === n && (n = nl(), null === n && (n = ll(), \n\t null === n && (n = ul(), null === n && (n = tl()))))))))))))))))), n;\n\t }\n\t function B() {\n\t var n;\n\t return n = j(), null === n && (n = q(), null === n && (n = $())), n;\n\t }\n\t function j() {\n\t var l, u;\n\t return l = qt, 46 === n.charCodeAt(qt) ? (u = ku, qt++) : (u = null, 0 === Wt && e(Tu)), \n\t null !== u && (Lt = l, u = xu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function $() {\n\t var l, u;\n\t return Wt++, l = qt, mu.test(n.charAt(qt)) ? (u = n.charAt(qt), qt++) : (u = null, \n\t 0 === Wt && e(Ru)), null !== u && (Lt = l, u = bu(u)), null === u ? (qt = l, l = u) : l = u, \n\t Wt--, null === l && (u = null, 0 === Wt && e(yu)), l;\n\t }\n\t function q() {\n\t var n;\n\t return n = M(), null === n && (n = D(), null === n && (n = Y(), null === n && (n = H(), \n\t null === n && (n = O(), null === n && (n = W(), null === n && (n = z(), null === n && (n = I(), \n\t null === n && (n = J(), null === n && (n = K(), null === n && (n = N(), null === n && (n = P(), \n\t null === n && (n = V(), null === n && (n = X(), null === n && (n = Z(), null === n && (n = _(), \n\t null === n && (n = nl(), null === n && (n = ll(), null === n && (n = ul(), null === n && (n = tl()))))))))))))))))))), \n\t n;\n\t }\n\t function L() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Fu ? (u = Fu, qt += 2) : (u = null, 0 === Wt && e(Qu)), \n\t null !== u && (Lt = l, u = Su()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function M() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Fu ? (u = Fu, qt += 2) : (u = null, 0 === Wt && e(Qu)), \n\t null !== u && (Lt = l, u = Uu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function D() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Eu ? (u = Eu, qt += 2) : (u = null, 0 === Wt && e(Gu)), \n\t null !== u && (Lt = l, u = Bu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function H() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === ju ? (u = ju, qt += 2) : (u = null, 0 === Wt && e($u)), \n\t null !== u && (Lt = l, u = qu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function O() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Lu ? (u = Lu, qt += 2) : (u = null, 0 === Wt && e(Mu)), \n\t null !== u && (Lt = l, u = Du()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function W() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Hu ? (u = Hu, qt += 2) : (u = null, 0 === Wt && e(Ou)), \n\t null !== u && (Lt = l, u = Wu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function z() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === zu ? (u = zu, qt += 2) : (u = null, 0 === Wt && e(Iu)), \n\t null !== u && (Lt = l, u = Ju()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function I() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Ku ? (u = Ku, qt += 2) : (u = null, 0 === Wt && e(Nu)), \n\t null !== u && (Lt = l, u = Pu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function J() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Vu ? (u = Vu, qt += 2) : (u = null, 0 === Wt && e(Xu)), \n\t null !== u && (Lt = l, u = Yu()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function K() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Zu ? (u = Zu, qt += 2) : (u = null, 0 === Wt && e(_u)), \n\t null !== u && (Lt = l, u = nt()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function N() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === lt ? (u = lt, qt += 2) : (u = null, 0 === Wt && e(ut)), \n\t null !== u && (Lt = l, u = tt()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function P() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === rt ? (u = rt, qt += 2) : (u = null, 0 === Wt && e(et)), \n\t null !== u && (Lt = l, u = ot()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function V() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === ct ? (u = ct, qt += 2) : (u = null, 0 === Wt && e(it)), \n\t null !== u && (Lt = l, u = at()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function X() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === ft ? (u = ft, qt += 2) : (u = null, 0 === Wt && e(st)), \n\t null !== u && (Lt = l, u = ht()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function Y() {\n\t var l, u, t;\n\t return l = qt, n.substr(qt, 2) === dt ? (u = dt, qt += 2) : (u = null, 0 === Wt && e(pt)), \n\t null !== u ? (n.length > qt ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(vt)), \n\t null !== t ? (Lt = l, u = wt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function Z() {\n\t var l, u, t;\n\t return l = qt, 92 === n.charCodeAt(qt) ? (u = At, qt++) : (u = null, 0 === Wt && e(Ct)), \n\t null !== u ? (gt.test(n.charAt(qt)) ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(bt)), \n\t null !== t ? (Lt = l, u = kt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t function _() {\n\t var l, u, t, r;\n\t if (l = qt, n.substr(qt, 2) === Tt ? (u = Tt, qt += 2) : (u = null, 0 === Wt && e(xt)), \n\t null !== u) {\n\t if (t = [], yt.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(mt)), \n\t null !== r) for (;null !== r; ) t.push(r), yt.test(n.charAt(qt)) ? (r = n.charAt(qt), \n\t qt++) : (r = null, 0 === Wt && e(mt)); else t = il;\n\t null !== t ? (Lt = l, u = Rt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il);\n\t } else qt = l, l = il;\n\t return l;\n\t }\n\t function nl() {\n\t var l, u, t, r;\n\t if (l = qt, n.substr(qt, 2) === Ft ? (u = Ft, qt += 2) : (u = null, 0 === Wt && e(Qt)), \n\t null !== u) {\n\t if (t = [], St.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(Ut)), \n\t null !== r) for (;null !== r; ) t.push(r), St.test(n.charAt(qt)) ? (r = n.charAt(qt), \n\t qt++) : (r = null, 0 === Wt && e(Ut)); else t = il;\n\t null !== t ? (Lt = l, u = Et(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il);\n\t } else qt = l, l = il;\n\t return l;\n\t }\n\t function ll() {\n\t var l, u, t, r;\n\t if (l = qt, n.substr(qt, 2) === Gt ? (u = Gt, qt += 2) : (u = null, 0 === Wt && e(Bt)), \n\t null !== u) {\n\t if (t = [], St.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(Ut)), \n\t null !== r) for (;null !== r; ) t.push(r), St.test(n.charAt(qt)) ? (r = n.charAt(qt), \n\t qt++) : (r = null, 0 === Wt && e(Ut)); else t = il;\n\t null !== t ? (Lt = l, u = jt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il);\n\t } else qt = l, l = il;\n\t return l;\n\t }\n\t function ul() {\n\t var l, u;\n\t return l = qt, n.substr(qt, 2) === Tt ? (u = Tt, qt += 2) : (u = null, 0 === Wt && e(xt)), \n\t null !== u && (Lt = l, u = $t()), null === u ? (qt = l, l = u) : l = u, l;\n\t }\n\t function tl() {\n\t var l, u, t;\n\t return l = qt, 92 === n.charCodeAt(qt) ? (u = At, qt++) : (u = null, 0 === Wt && e(Ct)), \n\t null !== u ? (n.length > qt ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(vt)), \n\t null !== t ? (Lt = l, u = bu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l, \n\t l = il)) : (qt = l, l = il), l;\n\t }\n\t var rl, el = arguments.length > 1 ? arguments[1] : {}, ol = {\n\t regexp: c\n\t }, cl = c, il = null, al = \"\", fl = \"|\", sl = '\"|\"', hl = function(n, l) {\n\t return l ? new Alternate(n, l[1]) : n;\n\t }, dl = function(n, l, u) {\n\t return new Match([ n ].concat(l).concat([ u ]));\n\t }, pl = \"^\", vl = '\"^\"', wl = function() {\n\t return new Token(\"start\");\n\t }, Al = \"$\", Cl = '\"$\"', gl = function() {\n\t return new Token(\"end\");\n\t }, bl = function(n, l) {\n\t return new Quantified(n, l);\n\t }, kl = \"Quantifier\", Tl = function(n, l) {\n\t return l && (n.greedy = !1), n;\n\t }, xl = \"{\", yl = '\"{\"', ml = \",\", Rl = '\",\"', Fl = \"}\", Ql = '\"}\"', Sl = function(n, l) {\n\t return new Quantifier(n, l);\n\t }, Ul = \",}\", El = '\",}\"', Gl = function(n) {\n\t return new Quantifier(n, 1/0);\n\t }, Bl = function(n) {\n\t return new Quantifier(n, n);\n\t }, jl = \"+\", $l = '\"+\"', ql = function() {\n\t return new Quantifier(1, 1/0);\n\t }, Ll = \"*\", Ml = '\"*\"', Dl = function() {\n\t return new Quantifier(0, 1/0);\n\t }, Hl = \"?\", Ol = '\"?\"', Wl = function() {\n\t return new Quantifier(0, 1);\n\t }, zl = /^[0-9]/, Il = \"[0-9]\", Jl = function(n) {\n\t return +n.join(\"\");\n\t }, Kl = \"(\", Nl = '\"(\"', Pl = \")\", Vl = '\")\"', Xl = function(n) {\n\t return n;\n\t }, Yl = function(n) {\n\t return new CaptureGroup(n);\n\t }, Zl = \"?:\", _l = '\"?:\"', nu = function(n) {\n\t return new Group(\"non-capture-group\", n);\n\t }, lu = \"?=\", uu = '\"?=\"', tu = function(n) {\n\t return new Group(\"positive-lookahead\", n);\n\t }, ru = \"?!\", eu = '\"?!\"', ou = function(n) {\n\t return new Group(\"negative-lookahead\", n);\n\t }, cu = \"CharacterSet\", iu = \"[\", au = '\"[\"', fu = \"]\", su = '\"]\"', hu = function(n, l) {\n\t return new CharSet(!!n, l);\n\t }, du = \"CharacterRange\", pu = \"-\", vu = '\"-\"', wu = function(n, l) {\n\t return new CharacterRange(n, l);\n\t }, Au = \"Character\", Cu = /^[^\\\\\\]]/, gu = \"[^\\\\\\\\\\\\]]\", bu = function(n) {\n\t return new Literal(n);\n\t }, ku = \".\", Tu = '\".\"', xu = function() {\n\t return new Token(\"any-character\");\n\t }, yu = \"Literal\", mu = /^[^|\\\\\\/.[()?+*$\\^]/, Ru = \"[^|\\\\\\\\\\\\/.[()?+*$\\\\^]\", Fu = \"\\\\b\", Qu = '\"\\\\\\\\b\"', Su = function() {\n\t return new Token(\"backspace\");\n\t }, Uu = function() {\n\t return new Token(\"word-boundary\");\n\t }, Eu = \"\\\\B\", Gu = '\"\\\\\\\\B\"', Bu = function() {\n\t return new Token(\"non-word-boundary\");\n\t }, ju = \"\\\\d\", $u = '\"\\\\\\\\d\"', qu = function() {\n\t return new Token(\"digit\");\n\t }, Lu = \"\\\\D\", Mu = '\"\\\\\\\\D\"', Du = function() {\n\t return new Token(\"non-digit\");\n\t }, Hu = \"\\\\f\", Ou = '\"\\\\\\\\f\"', Wu = function() {\n\t return new Token(\"form-feed\");\n\t }, zu = \"\\\\n\", Iu = '\"\\\\\\\\n\"', Ju = function() {\n\t return new Token(\"line-feed\");\n\t }, Ku = \"\\\\r\", Nu = '\"\\\\\\\\r\"', Pu = function() {\n\t return new Token(\"carriage-return\");\n\t }, Vu = \"\\\\s\", Xu = '\"\\\\\\\\s\"', Yu = function() {\n\t return new Token(\"white-space\");\n\t }, Zu = \"\\\\S\", _u = '\"\\\\\\\\S\"', nt = function() {\n\t return new Token(\"non-white-space\");\n\t }, lt = \"\\\\t\", ut = '\"\\\\\\\\t\"', tt = function() {\n\t return new Token(\"tab\");\n\t }, rt = \"\\\\v\", et = '\"\\\\\\\\v\"', ot = function() {\n\t return new Token(\"vertical-tab\");\n\t }, ct = \"\\\\w\", it = '\"\\\\\\\\w\"', at = function() {\n\t return new Token(\"word\");\n\t }, ft = \"\\\\W\", st = '\"\\\\\\\\W\"', ht = function() {\n\t return new Token(\"non-word\");\n\t }, dt = \"\\\\c\", pt = '\"\\\\\\\\c\"', vt = \"any character\", wt = function(n) {\n\t return new ControlCharacter(n);\n\t }, At = \"\\\\\", Ct = '\"\\\\\\\\\"', gt = /^[1-9]/, bt = \"[1-9]\", kt = function(n) {\n\t return new BackReference(n);\n\t }, Tt = \"\\\\0\", xt = '\"\\\\\\\\0\"', yt = /^[0-7]/, mt = \"[0-7]\", Rt = function(n) {\n\t return new Octal(n.join(\"\"));\n\t }, Ft = \"\\\\x\", Qt = '\"\\\\\\\\x\"', St = /^[0-9a-fA-F]/, Ut = \"[0-9a-fA-F]\", Et = function(n) {\n\t return new Hex(n.join(\"\"));\n\t }, Gt = \"\\\\u\", Bt = '\"\\\\\\\\u\"', jt = function(n) {\n\t return new Unicode(n.join(\"\"));\n\t }, $t = function() {\n\t return new Token(\"null-character\");\n\t }, qt = 0, Lt = 0, Mt = 0, Dt = {\n\t line: 1,\n\t column: 1,\n\t seenCR: !1\n\t }, Ht = 0, Ot = [], Wt = 0;\n\t if (\"startRule\" in el) {\n\t if (!(el.startRule in ol)) throw new Error(\"Can't start parsing from rule \\\"\" + el.startRule + '\".');\n\t cl = ol[el.startRule];\n\t }\n\t if (Token.offset = t, Token.text = u, rl = cl(), null !== rl && qt === n.length) return rl;\n\t throw o(Ot), Lt = Math.max(qt, Ht), new l(Ot, Lt < n.length ? n.charAt(Lt) : null, Lt, r(Lt).line, r(Lt).column);\n\t }\n\t return n(l, Error), {\n\t SyntaxError: l,\n\t parse: u\n\t };\n\t}(), index = 1, cgs = {};\n\n\tmodule.exports = parser\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## RegExp Handler\n\n\t https://github.com/ForbesLindesay/regexp\n\t https://github.com/dmajda/pegjs\n\t http://www.regexper.com/\n\n\t 每个节点的结构\n\t {\n\t type: '',\n\t offset: number,\n\t text: '',\n\t body: {},\n\t escaped: true/false\n\t }\n\n\t type 可选值\n\t alternate | 选择\n\t match 匹配\n\t capture-group () 捕获组\n\t non-capture-group (?:...) 非捕获组\n\t positive-lookahead (?=p) 零宽正向先行断言\n\t negative-lookahead (?!p) 零宽负向先行断言\n\t quantified a* 重复节点\n\t quantifier * 量词\n\t charset [] 字符集\n\t range {m, n} 范围\n\t literal a 直接量字符\n\t unicode \\uxxxx Unicode\n\t hex \\x 十六进制\n\t octal 八进制\n\t back-reference \\n 反向引用\n\t control-character \\cX 控制字符\n\n\t // Token\n\t start ^ 开头\n\t end $ 结尾\n\t any-character . 任意字符\n\t backspace [\\b] 退格直接量\n\t word-boundary \\b 单词边界\n\t non-word-boundary \\B 非单词边界\n\t digit \\d ASCII 数字,[0-9]\n\t non-digit \\D 非 ASCII 数字,[^0-9]\n\t form-feed \\f 换页符\n\t line-feed \\n 换行符\n\t carriage-return \\r 回车符\n\t white-space \\s 空白符\n\t non-white-space \\S 非空白符\n\t tab \\t 制表符\n\t vertical-tab \\v 垂直制表符\n\t word \\w ASCII 字符,[a-zA-Z0-9]\n\t non-word \\W 非 ASCII 字符,[^a-zA-Z0-9]\n\t null-character \\o NUL 字符\n\t */\n\n\tvar Util = __webpack_require__(3)\n\tvar Random = __webpack_require__(5)\n\t /*\n\t \n\t */\n\tvar Handler = {\n\t extend: Util.extend\n\t}\n\n\t// http://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart\n\t/*var ASCII_CONTROL_CODE_CHART = {\n\t '@': ['\\u0000'],\n\t A: ['\\u0001'],\n\t B: ['\\u0002'],\n\t C: ['\\u0003'],\n\t D: ['\\u0004'],\n\t E: ['\\u0005'],\n\t F: ['\\u0006'],\n\t G: ['\\u0007', '\\a'],\n\t H: ['\\u0008', '\\b'],\n\t I: ['\\u0009', '\\t'],\n\t J: ['\\u000A', '\\n'],\n\t K: ['\\u000B', '\\v'],\n\t L: ['\\u000C', '\\f'],\n\t M: ['\\u000D', '\\r'],\n\t N: ['\\u000E'],\n\t O: ['\\u000F'],\n\t P: ['\\u0010'],\n\t Q: ['\\u0011'],\n\t R: ['\\u0012'],\n\t S: ['\\u0013'],\n\t T: ['\\u0014'],\n\t U: ['\\u0015'],\n\t V: ['\\u0016'],\n\t W: ['\\u0017'],\n\t X: ['\\u0018'],\n\t Y: ['\\u0019'],\n\t Z: ['\\u001A'],\n\t '[': ['\\u001B', '\\e'],\n\t '\\\\': ['\\u001C'],\n\t ']': ['\\u001D'],\n\t '^': ['\\u001E'],\n\t '_': ['\\u001F']\n\t}*/\n\n\t// ASCII printable code chart\n\t// var LOWER = 'abcdefghijklmnopqrstuvwxyz'\n\t// var UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n\t// var NUMBER = '0123456789'\n\t// var SYMBOL = ' !\"#$%&\\'()*+,-./' + ':;<=>?@' + '[\\\\]^_`' + '{|}~'\n\tvar LOWER = ascii(97, 122)\n\tvar UPPER = ascii(65, 90)\n\tvar NUMBER = ascii(48, 57)\n\tvar OTHER = ascii(32, 47) + ascii(58, 64) + ascii(91, 96) + ascii(123, 126) // 排除 95 _ ascii(91, 94) + ascii(96, 96)\n\tvar PRINTABLE = ascii(32, 126)\n\tvar SPACE = ' \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029'\n\tvar CHARACTER_CLASSES = {\n\t '\\\\w': LOWER + UPPER + NUMBER + '_', // ascii(95, 95)\n\t '\\\\W': OTHER.replace('_', ''),\n\t '\\\\s': SPACE,\n\t '\\\\S': function() {\n\t var result = PRINTABLE\n\t for (var i = 0; i < SPACE.length; i++) {\n\t result = result.replace(SPACE[i], '')\n\t }\n\t return result\n\t }(),\n\t '\\\\d': NUMBER,\n\t '\\\\D': LOWER + UPPER + OTHER\n\t}\n\n\tfunction ascii(from, to) {\n\t var result = ''\n\t for (var i = from; i <= to; i++) {\n\t result += String.fromCharCode(i)\n\t }\n\t return result\n\t}\n\n\t// var ast = RegExpParser.parse(regexp.source)\n\tHandler.gen = function(node, result, cache) {\n\t cache = cache || {\n\t guid: 1\n\t }\n\t return Handler[node.type] ? Handler[node.type](node, result, cache) :\n\t Handler.token(node, result, cache)\n\t}\n\n\tHandler.extend({\n\t /* jshint unused:false */\n\t token: function(node, result, cache) {\n\t switch (node.type) {\n\t case 'start':\n\t case 'end':\n\t return ''\n\t case 'any-character':\n\t return Random.character()\n\t case 'backspace':\n\t return ''\n\t case 'word-boundary': // TODO\n\t return ''\n\t case 'non-word-boundary': // TODO\n\t break\n\t case 'digit':\n\t return Random.pick(\n\t NUMBER.split('')\n\t )\n\t case 'non-digit':\n\t return Random.pick(\n\t (LOWER + UPPER + OTHER).split('')\n\t )\n\t case 'form-feed':\n\t break\n\t case 'line-feed':\n\t return node.body || node.text\n\t case 'carriage-return':\n\t break\n\t case 'white-space':\n\t return Random.pick(\n\t SPACE.split('')\n\t )\n\t case 'non-white-space':\n\t return Random.pick(\n\t (LOWER + UPPER + NUMBER).split('')\n\t )\n\t case 'tab':\n\t break\n\t case 'vertical-tab':\n\t break\n\t case 'word': // \\w [a-zA-Z0-9]\n\t return Random.pick(\n\t (LOWER + UPPER + NUMBER).split('')\n\t )\n\t case 'non-word': // \\W [^a-zA-Z0-9]\n\t return Random.pick(\n\t OTHER.replace('_', '').split('')\n\t )\n\t case 'null-character':\n\t break\n\t }\n\t return node.body || node.text\n\t },\n\t /*\n\t {\n\t type: 'alternate',\n\t offset: 0,\n\t text: '',\n\t left: {\n\t boyd: []\n\t },\n\t right: {\n\t boyd: []\n\t }\n\t }\n\t */\n\t alternate: function(node, result, cache) {\n\t // node.left/right {}\n\t return this.gen(\n\t Random.boolean() ? node.left : node.right,\n\t result,\n\t cache\n\t )\n\t },\n\t /*\n\t {\n\t type: 'match',\n\t offset: 0,\n\t text: '',\n\t body: []\n\t }\n\t */\n\t match: function(node, result, cache) {\n\t result = ''\n\t // node.body []\n\t for (var i = 0; i < node.body.length; i++) {\n\t result += this.gen(node.body[i], result, cache)\n\t }\n\t return result\n\t },\n\t // ()\n\t 'capture-group': function(node, result, cache) {\n\t // node.body {}\n\t result = this.gen(node.body, result, cache)\n\t cache[cache.guid++] = result\n\t return result\n\t },\n\t // (?:...)\n\t 'non-capture-group': function(node, result, cache) {\n\t // node.body {}\n\t return this.gen(node.body, result, cache)\n\t },\n\t // (?=p)\n\t 'positive-lookahead': function(node, result, cache) {\n\t // node.body\n\t return this.gen(node.body, result, cache)\n\t },\n\t // (?!p)\n\t 'negative-lookahead': function(node, result, cache) {\n\t // node.body\n\t return ''\n\t },\n\t /*\n\t {\n\t type: 'quantified',\n\t offset: 3,\n\t text: 'c*',\n\t body: {\n\t type: 'literal',\n\t offset: 3,\n\t text: 'c',\n\t body: 'c',\n\t escaped: false\n\t },\n\t quantifier: {\n\t type: 'quantifier',\n\t offset: 4,\n\t text: '*',\n\t min: 0,\n\t max: Infinity,\n\t greedy: true\n\t }\n\t }\n\t */\n\t quantified: function(node, result, cache) {\n\t result = ''\n\t // node.quantifier {}\n\t var count = this.quantifier(node.quantifier);\n\t // node.body {}\n\t for (var i = 0; i < count; i++) {\n\t result += this.gen(node.body, result, cache)\n\t }\n\t return result\n\t },\n\t /*\n\t quantifier: {\n\t type: 'quantifier',\n\t offset: 4,\n\t text: '*',\n\t min: 0,\n\t max: Infinity,\n\t greedy: true\n\t }\n\t */\n\t quantifier: function(node, result, cache) {\n\t var min = Math.max(node.min, 0)\n\t var max = isFinite(node.max) ? node.max :\n\t min + Random.integer(3, 7)\n\t return Random.integer(min, max)\n\t },\n\t /*\n\t \n\t */\n\t charset: function(node, result, cache) {\n\t // node.invert\n\t if (node.invert) return this['invert-charset'](node, result, cache)\n\n\t // node.body []\n\t var literal = Random.pick(node.body)\n\t return this.gen(literal, result, cache)\n\t },\n\t 'invert-charset': function(node, result, cache) {\n\t var pool = PRINTABLE\n\t for (var i = 0, item; i < node.body.length; i++) {\n\t item = node.body[i]\n\t switch (item.type) {\n\t case 'literal':\n\t pool = pool.replace(item.body, '')\n\t break\n\t case 'range':\n\t var min = this.gen(item.start, result, cache).charCodeAt()\n\t var max = this.gen(item.end, result, cache).charCodeAt()\n\t for (var ii = min; ii <= max; ii++) {\n\t pool = pool.replace(String.fromCharCode(ii), '')\n\t }\n\t /* falls through */\n\t default:\n\t var characters = CHARACTER_CLASSES[item.text]\n\t if (characters) {\n\t for (var iii = 0; iii <= characters.length; iii++) {\n\t pool = pool.replace(characters[iii], '')\n\t }\n\t }\n\t }\n\t }\n\t return Random.pick(pool.split(''))\n\t },\n\t range: function(node, result, cache) {\n\t // node.start, node.end\n\t var min = this.gen(node.start, result, cache).charCodeAt()\n\t var max = this.gen(node.end, result, cache).charCodeAt()\n\t return String.fromCharCode(\n\t Random.integer(min, max)\n\t )\n\t },\n\t literal: function(node, result, cache) {\n\t return node.escaped ? node.body : node.text\n\t },\n\t // Unicode \\u\n\t unicode: function(node, result, cache) {\n\t return String.fromCharCode(\n\t parseInt(node.code, 16)\n\t )\n\t },\n\t // 十六进制 \\xFF\n\t hex: function(node, result, cache) {\n\t return String.fromCharCode(\n\t parseInt(node.code, 16)\n\t )\n\t },\n\t // 八进制 \\0\n\t octal: function(node, result, cache) {\n\t return String.fromCharCode(\n\t parseInt(node.code, 8)\n\t )\n\t },\n\t // 反向引用\n\t 'back-reference': function(node, result, cache) {\n\t return cache[node.code] || ''\n\t },\n\t /*\n\t http://en.wikipedia.org/wiki/C0_and_C1_control_codes\n\t */\n\t CONTROL_CHARACTER_MAP: function() {\n\t var CONTROL_CHARACTER = '@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \\\\ ] ^ _'.split(' ')\n\t var CONTROL_CHARACTER_UNICODE = '\\u0000 \\u0001 \\u0002 \\u0003 \\u0004 \\u0005 \\u0006 \\u0007 \\u0008 \\u0009 \\u000A \\u000B \\u000C \\u000D \\u000E \\u000F \\u0010 \\u0011 \\u0012 \\u0013 \\u0014 \\u0015 \\u0016 \\u0017 \\u0018 \\u0019 \\u001A \\u001B \\u001C \\u001D \\u001E \\u001F'.split(' ')\n\t var map = {}\n\t for (var i = 0; i < CONTROL_CHARACTER.length; i++) {\n\t map[CONTROL_CHARACTER[i]] = CONTROL_CHARACTER_UNICODE[i]\n\t }\n\t return map\n\t }(),\n\t 'control-character': function(node, result, cache) {\n\t return this.CONTROL_CHARACTER_MAP[node.code]\n\t }\n\t})\n\n\tmodule.exports = Handler\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(24)\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## toJSONSchema\n\n\t 把 Mock.js 风格的数据模板转换成 JSON Schema。\n\n\t > [JSON Schema](http://json-schema.org/)\n\t */\n\tvar Constant = __webpack_require__(2)\n\tvar Util = __webpack_require__(3)\n\tvar Parser = __webpack_require__(4)\n\n\tfunction toJSONSchema(template, name, path /* Internal Use Only */ ) {\n\t // type rule properties items\n\t path = path || []\n\t var result = {\n\t name: typeof name === 'string' ? name.replace(Constant.RE_KEY, '$1') : name,\n\t template: template,\n\t type: Util.type(template), // 可能不准确,例如 { 'name|1': [{}, {} ...] }\n\t rule: Parser.parse(name)\n\t }\n\t result.path = path.slice(0)\n\t result.path.push(name === undefined ? 'ROOT' : result.name)\n\n\t switch (result.type) {\n\t case 'array':\n\t result.items = []\n\t Util.each(template, function(value, index) {\n\t result.items.push(\n\t toJSONSchema(value, index, result.path)\n\t )\n\t })\n\t break\n\t case 'object':\n\t result.properties = []\n\t Util.each(template, function(value, name) {\n\t result.properties.push(\n\t toJSONSchema(value, name, result.path)\n\t )\n\t })\n\t break\n\t }\n\n\t return result\n\n\t}\n\n\tmodule.exports = toJSONSchema\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(26)\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/*\n\t ## valid(template, data)\n\n\t 校验真实数据 data 是否与数据模板 template 匹配。\n\t \n\t 实现思路:\n\t 1. 解析规则。\n\t 先把数据模板 template 解析为更方便机器解析的 JSON-Schame\n\t name 属性名 \n\t type 属性值类型\n\t template 属性值模板\n\t properties 对象属性数组\n\t items 数组元素数组\n\t rule 属性值生成规则\n\t 2. 递归验证规则。\n\t 然后用 JSON-Schema 校验真实数据,校验项包括属性名、值类型、值、值生成规则。\n\n\t 提示信息 \n\t https://github.com/fge/json-schema-validator/blob/master/src/main/resources/com/github/fge/jsonschema/validator/validation.properties\n\t [JSON-Schama validator](http://json-schema-validator.herokuapp.com/)\n\t [Regexp Demo](http://demos.forbeslindesay.co.uk/regexp/)\n\t*/\n\tvar Constant = __webpack_require__(2)\n\tvar Util = __webpack_require__(3)\n\tvar toJSONSchema = __webpack_require__(23)\n\n\tfunction valid(template, data) {\n\t var schema = toJSONSchema(template)\n\t var result = Diff.diff(schema, data)\n\t for (var i = 0; i < result.length; i++) {\n\t // console.log(template, data)\n\t // console.warn(Assert.message(result[i]))\n\t }\n\t return result\n\t}\n\n\t/*\n\t ## name\n\t 有生成规则:比较解析后的 name\n\t 无生成规则:直接比较\n\t ## type\n\t 无类型转换:直接比较\n\t 有类型转换:先试着解析 template,然后再检查?\n\t ## value vs. template\n\t 基本类型\n\t 无生成规则:直接比较\n\t 有生成规则:\n\t number\n\t min-max.dmin-dmax\n\t min-max.dcount\n\t count.dmin-dmax\n\t count.dcount\n\t +step\n\t 整数部分\n\t 小数部分\n\t boolean \n\t string \n\t min-max\n\t count\n\t ## properties\n\t 对象\n\t 有生成规则:检测期望的属性个数,继续递归\n\t 无生成规则:检测全部的属性个数,继续递归\n\t ## items\n\t 数组\n\t 有生成规则:\n\t `'name|1': [{}, {} ...]` 其中之一,继续递归\n\t `'name|+1': [{}, {} ...]` 顺序检测,继续递归\n\t `'name|min-max': [{}, {} ...]` 检测个数,继续递归\n\t `'name|count': [{}, {} ...]` 检测个数,继续递归\n\t 无生成规则:检测全部的元素个数,继续递归\n\t*/\n\tvar Diff = {\n\t diff: function diff(schema, data, name /* Internal Use Only */ ) {\n\t var result = []\n\n\t // 先检测名称 name 和类型 type,如果匹配,才有必要继续检测\n\t if (\n\t this.name(schema, data, name, result) &&\n\t this.type(schema, data, name, result)\n\t ) {\n\t this.value(schema, data, name, result)\n\t this.properties(schema, data, name, result)\n\t this.items(schema, data, name, result)\n\t }\n\n\t return result\n\t },\n\t /* jshint unused:false */\n\t name: function(schema, data, name, result) {\n\t var length = result.length\n\n\t Assert.equal('name', schema.path, name + '', schema.name + '', result)\n\n\t return result.length === length\n\t },\n\t type: function(schema, data, name, result) {\n\t var length = result.length\n\n\t switch (schema.type) {\n\t case 'string':\n\t // 跳过含有『占位符』的属性值,因为『占位符』返回值的类型可能和模板不一致,例如 '@int' 会返回一个整形值\n\t if (schema.template.match(Constant.RE_PLACEHOLDER)) return true\n\t break\n\t case 'array':\n\t if (schema.rule.parameters) {\n\t // name|count: array\n\t if (schema.rule.min !== undefined && schema.rule.max === undefined) {\n\t // 跳过 name|1: array,因为最终值的类型(很可能)不是数组,也不一定与 `array` 中的类型一致\n\t if (schema.rule.count === 1) return true\n\t }\n\t // 跳过 name|+inc: array\n\t if (schema.rule.parameters[2]) return true\n\t }\n\t break\n\t case 'function':\n\t // 跳过 `'name': function`,因为函数可以返回任何类型的值。\n\t return true\n\t }\n\n\t Assert.equal('type', schema.path, Util.type(data), schema.type, result)\n\n\t return result.length === length\n\t },\n\t value: function(schema, data, name, result) {\n\t var length = result.length\n\n\t var rule = schema.rule\n\t var templateType = schema.type\n\t if (templateType === 'object' || templateType === 'array' || templateType === 'function') return true\n\n\t // 无生成规则\n\t if (!rule.parameters) {\n\t switch (templateType) {\n\t case 'regexp':\n\t Assert.match('value', schema.path, data, schema.template, result)\n\t return result.length === length\n\t case 'string':\n\t // 同样跳过含有『占位符』的属性值,因为『占位符』的返回值会通常会与模板不一致\n\t if (schema.template.match(Constant.RE_PLACEHOLDER)) return result.length === length\n\t break\n\t }\n\t Assert.equal('value', schema.path, data, schema.template, result)\n\t return result.length === length\n\t }\n\n\t // 有生成规则\n\t var actualRepeatCount\n\t switch (templateType) {\n\t case 'number':\n\t var parts = (data + '').split('.')\n\t parts[0] = +parts[0]\n\n\t // 整数部分\n\t // |min-max\n\t if (rule.min !== undefined && rule.max !== undefined) {\n\t Assert.greaterThanOrEqualTo('value', schema.path, parts[0], Math.min(rule.min, rule.max), result)\n\t // , 'numeric instance is lower than the required minimum (minimum: {expected}, found: {actual})')\n\t Assert.lessThanOrEqualTo('value', schema.path, parts[0], Math.max(rule.min, rule.max), result)\n\t }\n\t // |count\n\t if (rule.min !== undefined && rule.max === undefined) {\n\t Assert.equal('value', schema.path, parts[0], rule.min, result, '[value] ' + name)\n\t }\n\n\t // 小数部分\n\t if (rule.decimal) {\n\t // |dmin-dmax\n\t if (rule.dmin !== undefined && rule.dmax !== undefined) {\n\t Assert.greaterThanOrEqualTo('value', schema.path, parts[1].length, rule.dmin, result)\n\t Assert.lessThanOrEqualTo('value', schema.path, parts[1].length, rule.dmax, result)\n\t }\n\t // |dcount\n\t if (rule.dmin !== undefined && rule.dmax === undefined) {\n\t Assert.equal('value', schema.path, parts[1].length, rule.dmin, result)\n\t }\n\t }\n\n\t break\n\n\t case 'boolean':\n\t break\n\n\t case 'string':\n\t // 'aaa'.match(/a/g)\n\t actualRepeatCount = data.match(new RegExp(schema.template, 'g'))\n\t actualRepeatCount = actualRepeatCount ? actualRepeatCount.length : 0\n\n\t // |min-max\n\t if (rule.min !== undefined && rule.max !== undefined) {\n\t Assert.greaterThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.min, result)\n\t Assert.lessThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.max, result)\n\t }\n\t // |count\n\t if (rule.min !== undefined && rule.max === undefined) {\n\t Assert.equal('repeat count', schema.path, actualRepeatCount, rule.min, result)\n\t }\n\n\t break\n\n\t case 'regexp':\n\t actualRepeatCount = data.match(new RegExp(schema.template.source.replace(/^\\^|\\$$/g, ''), 'g'))\n\t actualRepeatCount = actualRepeatCount ? actualRepeatCount.length : 0\n\n\t // |min-max\n\t if (rule.min !== undefined && rule.max !== undefined) {\n\t Assert.greaterThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.min, result)\n\t Assert.lessThanOrEqualTo('repeat count', schema.path, actualRepeatCount, rule.max, result)\n\t }\n\t // |count\n\t if (rule.min !== undefined && rule.max === undefined) {\n\t Assert.equal('repeat count', schema.path, actualRepeatCount, rule.min, result)\n\t }\n\t break\n\t }\n\n\t return result.length === length\n\t },\n\t properties: function(schema, data, name, result) {\n\t var length = result.length\n\n\t var rule = schema.rule\n\t var keys = Util.keys(data)\n\t if (!schema.properties) return\n\n\t // 无生成规则\n\t if (!schema.rule.parameters) {\n\t Assert.equal('properties length', schema.path, keys.length, schema.properties.length, result)\n\t } else {\n\t // 有生成规则\n\t // |min-max\n\t if (rule.min !== undefined && rule.max !== undefined) {\n\t Assert.greaterThanOrEqualTo('properties length', schema.path, keys.length, Math.min(rule.min, rule.max), result)\n\t Assert.lessThanOrEqualTo('properties length', schema.path, keys.length, Math.max(rule.min, rule.max), result)\n\t }\n\t // |count\n\t if (rule.min !== undefined && rule.max === undefined) {\n\t // |1, |>1\n\t if (rule.count !== 1) Assert.equal('properties length', schema.path, keys.length, rule.min, result)\n\t }\n\t }\n\n\t if (result.length !== length) return false\n\n\t for (var i = 0; i < keys.length; i++) {\n\t result.push.apply(\n\t result,\n\t this.diff(\n\t function() {\n\t var property\n\t Util.each(schema.properties, function(item /*, index*/ ) {\n\t if (item.name === keys[i]) property = item\n\t })\n\t return property || schema.properties[i]\n\t }(),\n\t data[keys[i]],\n\t keys[i]\n\t )\n\t )\n\t }\n\n\t return result.length === length\n\t },\n\t items: function(schema, data, name, result) {\n\t var length = result.length\n\n\t if (!schema.items) return\n\n\t var rule = schema.rule\n\n\t // 无生成规则\n\t if (!schema.rule.parameters) {\n\t Assert.equal('items length', schema.path, data.length, schema.items.length, result)\n\t } else {\n\t // 有生成规则\n\t // |min-max\n\t if (rule.min !== undefined && rule.max !== undefined) {\n\t Assert.greaterThanOrEqualTo('items', schema.path, data.length, (Math.min(rule.min, rule.max) * schema.items.length), result,\n\t '[{utype}] array is too short: {path} must have at least {expected} elements but instance has {actual} elements')\n\t Assert.lessThanOrEqualTo('items', schema.path, data.length, (Math.max(rule.min, rule.max) * schema.items.length), result,\n\t '[{utype}] array is too long: {path} must have at most {expected} elements but instance has {actual} elements')\n\t }\n\t // |count\n\t if (rule.min !== undefined && rule.max === undefined) {\n\t // |1, |>1\n\t if (rule.count === 1) return result.length === length\n\t else Assert.equal('items length', schema.path, data.length, (rule.min * schema.items.length), result)\n\t }\n\t // |+inc\n\t if (rule.parameters[2]) return result.length === length\n\t }\n\n\t if (result.length !== length) return false\n\n\t for (var i = 0; i < data.length; i++) {\n\t result.push.apply(\n\t result,\n\t this.diff(\n\t schema.items[i % schema.items.length],\n\t data[i],\n\t i % schema.items.length\n\t )\n\t )\n\t }\n\n\t return result.length === length\n\t }\n\t}\n\n\t/*\n\t 完善、友好的提示信息\n\t \n\t Equal, not equal to, greater than, less than, greater than or equal to, less than or equal to\n\t 路径 验证类型 描述 \n\n\t Expect path.name is less than or equal to expected, but path.name is actual.\n\n\t Expect path.name is less than or equal to expected, but path.name is actual.\n\t Expect path.name is greater than or equal to expected, but path.name is actual.\n\n\t*/\n\tvar Assert = {\n\t message: function(item) {\n\t return (item.message ||\n\t '[{utype}] Expect {path}\\'{ltype} {action} {expected}, but is {actual}')\n\t .replace('{utype}', item.type.toUpperCase())\n\t .replace('{ltype}', item.type.toLowerCase())\n\t .replace('{path}', Util.isArray(item.path) && item.path.join('.') || item.path)\n\t .replace('{action}', item.action)\n\t .replace('{expected}', item.expected)\n\t .replace('{actual}', item.actual)\n\t },\n\t equal: function(type, path, actual, expected, result, message) {\n\t if (actual === expected) return true\n\t switch (type) {\n\t case 'type':\n\t // 正则模板 === 字符串最终值\n\t if (expected === 'regexp' && actual === 'string') return true\n\t break\n\t }\n\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is equal to',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t // actual matches expected\n\t match: function(type, path, actual, expected, result, message) {\n\t if (expected.test(actual)) return true\n\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'matches',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t notEqual: function(type, path, actual, expected, result, message) {\n\t if (actual !== expected) return true\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is not equal to',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t greaterThan: function(type, path, actual, expected, result, message) {\n\t if (actual > expected) return true\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is greater than',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t lessThan: function(type, path, actual, expected, result, message) {\n\t if (actual < expected) return true\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is less to',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t greaterThanOrEqualTo: function(type, path, actual, expected, result, message) {\n\t if (actual >= expected) return true\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is greater than or equal to',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t },\n\t lessThanOrEqualTo: function(type, path, actual, expected, result, message) {\n\t if (actual <= expected) return true\n\t var item = {\n\t path: path,\n\t type: type,\n\t actual: actual,\n\t expected: expected,\n\t action: 'is less than or equal to',\n\t message: message\n\t }\n\t item.message = Assert.message(item)\n\t result.push(item)\n\t return false\n\t }\n\t}\n\n\tvalid.Diff = Diff\n\tvalid.Assert = Assert\n\n\tmodule.exports = valid\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(28)\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* global window, document, location, Event, setTimeout */\n\t/*\n\t ## MockXMLHttpRequest\n\n\t 期望的功能:\n\t 1. 完整地覆盖原生 XHR 的行为\n\t 2. 完整地模拟原生 XHR 的行为\n\t 3. 在发起请求时,自动检测是否需要拦截\n\t 4. 如果不必拦截,则执行原生 XHR 的行为\n\t 5. 如果需要拦截,则执行虚拟 XHR 的行为\n\t 6. 兼容 XMLHttpRequest 和 ActiveXObject\n\t new window.XMLHttpRequest()\n\t new window.ActiveXObject(\"Microsoft.XMLHTTP\")\n\n\t 关键方法的逻辑:\n\t * new 此时尚无法确定是否需要拦截,所以创建原生 XHR 对象是必须的。\n\t * open 此时可以取到 URL,可以决定是否进行拦截。\n\t * send 此时已经确定了请求方式。\n\n\t 规范:\n\t http://xhr.spec.whatwg.org/\n\t http://www.w3.org/TR/XMLHttpRequest2/\n\n\t 参考实现:\n\t https://github.com/philikon/MockHttpRequest/blob/master/lib/mock.js\n\t https://github.com/trek/FakeXMLHttpRequest/blob/master/fake_xml_http_request.js\n\t https://github.com/ilinsky/xmlhttprequest/blob/master/XMLHttpRequest.js\n\t https://github.com/firebug/firebug-lite/blob/master/content/lite/xhr.js\n\t https://github.com/thx/RAP/blob/master/lab/rap.plugin.xinglie.js\n\n\t **需不需要全面重写 XMLHttpRequest?**\n\t http://xhr.spec.whatwg.org/#interface-xmlhttprequest\n\t 关键属性 readyState、status、statusText、response、responseText、responseXML 是 readonly,所以,试图通过修改这些状态,来模拟响应是不可行的。\n\t 因此,唯一的办法是模拟整个 XMLHttpRequest,就像 jQuery 对事件模型的封装。\n\n\t // Event handlers\n\t onloadstart loadstart\n\t onprogress progress\n\t onabort abort\n\t onerror error\n\t onload load\n\t ontimeout timeout\n\t onloadend loadend\n\t onreadystatechange readystatechange\n\t */\n\n\tvar Util = __webpack_require__(3)\n\n\t// 备份原生 XMLHttpRequest\n\twindow._XMLHttpRequest = window.XMLHttpRequest\n\twindow._ActiveXObject = window.ActiveXObject\n\n\t/*\n\t PhantomJS\n\t TypeError: '[object EventConstructor]' is not a constructor (evaluating 'new Event(\"readystatechange\")')\n\n\t https://github.com/bluerail/twitter-bootstrap-rails-confirm/issues/18\n\t https://github.com/ariya/phantomjs/issues/11289\n\t*/\n\ttry {\n\t new window.Event('custom')\n\t} catch (exception) {\n\t window.Event = function(type, bubbles, cancelable, detail) {\n\t var event = document.createEvent('CustomEvent') // MUST be 'CustomEvent'\n\t event.initCustomEvent(type, bubbles, cancelable, detail)\n\t return event\n\t }\n\t}\n\n\tvar XHR_STATES = {\n\t // The object has been constructed.\n\t UNSENT: 0,\n\t // The open() method has been successfully invoked.\n\t OPENED: 1,\n\t // All redirects (if any) have been followed and all HTTP headers of the response have been received.\n\t HEADERS_RECEIVED: 2,\n\t // The response's body is being received.\n\t LOADING: 3,\n\t // The data transfer has been completed or something went wrong during the transfer (e.g. infinite redirects).\n\t DONE: 4\n\t}\n\n\tvar XHR_EVENTS = 'readystatechange loadstart progress abort error load timeout loadend'.split(' ')\n\tvar XHR_REQUEST_PROPERTIES = 'timeout withCredentials'.split(' ')\n\tvar XHR_RESPONSE_PROPERTIES = 'readyState responseURL status statusText responseType response responseText responseXML'.split(' ')\n\n\t// https://github.com/trek/FakeXMLHttpRequest/blob/master/fake_xml_http_request.js#L32\n\tvar HTTP_STATUS_CODES = {\n\t 100: \"Continue\",\n\t 101: \"Switching Protocols\",\n\t 200: \"OK\",\n\t 201: \"Created\",\n\t 202: \"Accepted\",\n\t 203: \"Non-Authoritative Information\",\n\t 204: \"No Content\",\n\t 205: \"Reset Content\",\n\t 206: \"Partial Content\",\n\t 300: \"Multiple Choice\",\n\t 301: \"Moved Permanently\",\n\t 302: \"Found\",\n\t 303: \"See Other\",\n\t 304: \"Not Modified\",\n\t 305: \"Use Proxy\",\n\t 307: \"Temporary Redirect\",\n\t 400: \"Bad Request\",\n\t 401: \"Unauthorized\",\n\t 402: \"Payment Required\",\n\t 403: \"Forbidden\",\n\t 404: \"Not Found\",\n\t 405: \"Method Not Allowed\",\n\t 406: \"Not Acceptable\",\n\t 407: \"Proxy Authentication Required\",\n\t 408: \"Request Timeout\",\n\t 409: \"Conflict\",\n\t 410: \"Gone\",\n\t 411: \"Length Required\",\n\t 412: \"Precondition Failed\",\n\t 413: \"Request Entity Too Large\",\n\t 414: \"Request-URI Too Long\",\n\t 415: \"Unsupported Media Type\",\n\t 416: \"Requested Range Not Satisfiable\",\n\t 417: \"Expectation Failed\",\n\t 422: \"Unprocessable Entity\",\n\t 500: \"Internal Server Error\",\n\t 501: \"Not Implemented\",\n\t 502: \"Bad Gateway\",\n\t 503: \"Service Unavailable\",\n\t 504: \"Gateway Timeout\",\n\t 505: \"HTTP Version Not Supported\"\n\t}\n\n\t/*\n\t MockXMLHttpRequest\n\t*/\n\n\tfunction MockXMLHttpRequest() {\n\t // 初始化 custom 对象,用于存储自定义属性\n\t this.custom = {\n\t events: {},\n\t requestHeaders: {},\n\t responseHeaders: {}\n\t }\n\t}\n\n\tMockXMLHttpRequest._settings = {\n\t timeout: '10-100',\n\t /*\n\t timeout: 50,\n\t timeout: '10-100',\n\t */\n\t}\n\n\tMockXMLHttpRequest.setup = function(settings) {\n\t Util.extend(MockXMLHttpRequest._settings, settings)\n\t return MockXMLHttpRequest._settings\n\t}\n\n\tUtil.extend(MockXMLHttpRequest, XHR_STATES)\n\tUtil.extend(MockXMLHttpRequest.prototype, XHR_STATES)\n\n\t// 标记当前对象为 MockXMLHttpRequest\n\tMockXMLHttpRequest.prototype.mock = true\n\n\t// 是否拦截 Ajax 请求\n\tMockXMLHttpRequest.prototype.match = false\n\n\t// 初始化 Request 相关的属性和方法\n\tUtil.extend(MockXMLHttpRequest.prototype, {\n\t // https://xhr.spec.whatwg.org/#the-open()-method\n\t // Sets the request method, request URL, and synchronous flag.\n\t open: function(method, url, async, username, password) {\n\t var that = this\n\n\t Util.extend(this.custom, {\n\t method: method,\n\t url: url,\n\t async: typeof async === 'boolean' ? async : true,\n\t username: username,\n\t password: password,\n\t options: {\n\t url: url,\n\t type: method\n\t }\n\t })\n\n\t this.custom.timeout = function(timeout) {\n\t if (typeof timeout === 'number') return timeout\n\t if (typeof timeout === 'string' && !~timeout.indexOf('-')) return parseInt(timeout, 10)\n\t if (typeof timeout === 'string' && ~timeout.indexOf('-')) {\n\t var tmp = timeout.split('-')\n\t var min = parseInt(tmp[0], 10)\n\t var max = parseInt(tmp[1], 10)\n\t return Math.round(Math.random() * (max - min)) + min\n\t }\n\t }(MockXMLHttpRequest._settings.timeout)\n\n\t // 查找与请求参数匹配的数据模板\n\t var item = find(this.custom.options)\n\n\t function handle(event) {\n\t // 同步属性 NativeXMLHttpRequest => MockXMLHttpRequest\n\t for (var i = 0; i < XHR_RESPONSE_PROPERTIES.length; i++) {\n\t try {\n\t that[XHR_RESPONSE_PROPERTIES[i]] = xhr[XHR_RESPONSE_PROPERTIES[i]]\n\t } catch (e) {}\n\t }\n\t // 触发 MockXMLHttpRequest 上的同名事件\n\t that.dispatchEvent(new Event(event.type /*, false, false, that*/ ))\n\t }\n\n\t // 如果未找到匹配的数据模板,则采用原生 XHR 发送请求。\n\t if (!item) {\n\t // 创建原生 XHR 对象,调用原生 open(),监听所有原生事件\n\t var xhr = createNativeXMLHttpRequest()\n\t this.custom.xhr = xhr\n\n\t // 初始化所有事件,用于监听原生 XHR 对象的事件\n\t for (var i = 0; i < XHR_EVENTS.length; i++) {\n\t xhr.addEventListener(XHR_EVENTS[i], handle)\n\t }\n\n\t // xhr.open()\n\t if (username) xhr.open(method, url, async, username, password)\n\t else xhr.open(method, url, async)\n\n\t // 同步属性 MockXMLHttpRequest => NativeXMLHttpRequest\n\t for (var j = 0; j < XHR_REQUEST_PROPERTIES.length; j++) {\n\t try {\n\t xhr[XHR_REQUEST_PROPERTIES[j]] = that[XHR_REQUEST_PROPERTIES[j]]\n\t } catch (e) {}\n\t }\n\n\t return\n\t }\n\n\t // 找到了匹配的数据模板,开始拦截 XHR 请求\n\t this.match = true\n\t this.custom.template = item\n\t this.readyState = MockXMLHttpRequest.OPENED\n\t this.dispatchEvent(new Event('readystatechange' /*, false, false, this*/ ))\n\t },\n\t // https://xhr.spec.whatwg.org/#the-setrequestheader()-method\n\t // Combines a header in author request headers.\n\t setRequestHeader: function(name, value) {\n\t // 原生 XHR\n\t if (!this.match) {\n\t this.custom.xhr.setRequestHeader(name, value)\n\t return\n\t }\n\n\t // 拦截 XHR\n\t var requestHeaders = this.custom.requestHeaders\n\t if (requestHeaders[name]) requestHeaders[name] += ',' + value\n\t else requestHeaders[name] = value\n\t },\n\t timeout: 0,\n\t withCredentials: false,\n\t upload: {},\n\t // https://xhr.spec.whatwg.org/#the-send()-method\n\t // Initiates the request.\n\t send: function send(data) {\n\t var that = this\n\t this.custom.options.body = data\n\n\t // 原生 XHR\n\t if (!this.match) {\n\t this.custom.xhr.send(data)\n\t return\n\t }\n\n\t // 拦截 XHR\n\n\t // X-Requested-With header\n\t this.setRequestHeader('X-Requested-With', 'MockXMLHttpRequest')\n\n\t // loadstart The fetch initiates.\n\t this.dispatchEvent(new Event('loadstart' /*, false, false, this*/ ))\n\n\t if (this.custom.async) setTimeout(done, this.custom.timeout) // 异步\n\t else done() // 同步\n\n\t function done() {\n\t that.readyState = MockXMLHttpRequest.HEADERS_RECEIVED\n\t that.dispatchEvent(new Event('readystatechange' /*, false, false, that*/ ))\n\t that.readyState = MockXMLHttpRequest.LOADING\n\t that.dispatchEvent(new Event('readystatechange' /*, false, false, that*/ ))\n\n\t that.status = 200\n\t that.statusText = HTTP_STATUS_CODES[200]\n\n\t // fix #92 #93 by @qddegtya\n\t that.response = that.responseText = JSON.stringify(\n\t convert(that.custom.template, that.custom.options),\n\t null, 4\n\t )\n\n\t that.readyState = MockXMLHttpRequest.DONE\n\t that.dispatchEvent(new Event('readystatechange' /*, false, false, that*/ ))\n\t that.dispatchEvent(new Event('load' /*, false, false, that*/ ));\n\t that.dispatchEvent(new Event('loadend' /*, false, false, that*/ ));\n\t }\n\t },\n\t // https://xhr.spec.whatwg.org/#the-abort()-method\n\t // Cancels any network activity.\n\t abort: function abort() {\n\t // 原生 XHR\n\t if (!this.match) {\n\t this.custom.xhr.abort()\n\t return\n\t }\n\n\t // 拦截 XHR\n\t this.readyState = MockXMLHttpRequest.UNSENT\n\t this.dispatchEvent(new Event('abort', false, false, this))\n\t this.dispatchEvent(new Event('error', false, false, this))\n\t }\n\t})\n\n\t// 初始化 Response 相关的属性和方法\n\tUtil.extend(MockXMLHttpRequest.prototype, {\n\t responseURL: '',\n\t status: MockXMLHttpRequest.UNSENT,\n\t statusText: '',\n\t // https://xhr.spec.whatwg.org/#the-getresponseheader()-method\n\t getResponseHeader: function(name) {\n\t // 原生 XHR\n\t if (!this.match) {\n\t return this.custom.xhr.getResponseHeader(name)\n\t }\n\n\t // 拦截 XHR\n\t return this.custom.responseHeaders[name.toLowerCase()]\n\t },\n\t // https://xhr.spec.whatwg.org/#the-getallresponseheaders()-method\n\t // http://www.utf8-chartable.de/\n\t getAllResponseHeaders: function() {\n\t // 原生 XHR\n\t if (!this.match) {\n\t return this.custom.xhr.getAllResponseHeaders()\n\t }\n\n\t // 拦截 XHR\n\t var responseHeaders = this.custom.responseHeaders\n\t var headers = ''\n\t for (var h in responseHeaders) {\n\t if (!responseHeaders.hasOwnProperty(h)) continue\n\t headers += h + ': ' + responseHeaders[h] + '\\r\\n'\n\t }\n\t return headers\n\t },\n\t overrideMimeType: function( /*mime*/ ) {},\n\t responseType: '', // '', 'text', 'arraybuffer', 'blob', 'document', 'json'\n\t response: null,\n\t responseText: '',\n\t responseXML: null\n\t})\n\n\t// EventTarget\n\tUtil.extend(MockXMLHttpRequest.prototype, {\n\t addEventListener: function addEventListener(type, handle) {\n\t var events = this.custom.events\n\t if (!events[type]) events[type] = []\n\t events[type].push(handle)\n\t },\n\t removeEventListener: function removeEventListener(type, handle) {\n\t var handles = this.custom.events[type] || []\n\t for (var i = 0; i < handles.length; i++) {\n\t if (handles[i] === handle) {\n\t handles.splice(i--, 1)\n\t }\n\t }\n\t },\n\t dispatchEvent: function dispatchEvent(event) {\n\t var handles = this.custom.events[event.type] || []\n\t for (var i = 0; i < handles.length; i++) {\n\t handles[i].call(this, event)\n\t }\n\n\t var ontype = 'on' + event.type\n\t if (this[ontype]) this[ontype](event)\n\t }\n\t})\n\n\t// Inspired by jQuery\n\tfunction createNativeXMLHttpRequest() {\n\t var isLocal = function() {\n\t var rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/\n\t var rurl = /^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/\n\t var ajaxLocation = location.href\n\t var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n\t return rlocalProtocol.test(ajaxLocParts[1])\n\t }()\n\n\t return window.ActiveXObject ?\n\t (!isLocal && createStandardXHR() || createActiveXHR()) : createStandardXHR()\n\n\t function createStandardXHR() {\n\t try {\n\t return new window._XMLHttpRequest();\n\t } catch (e) {}\n\t }\n\n\t function createActiveXHR() {\n\t try {\n\t return new window._ActiveXObject(\"Microsoft.XMLHTTP\");\n\t } catch (e) {}\n\t }\n\t}\n\n\n\t// 查找与请求参数匹配的数据模板:URL,Type\n\tfunction find(options) {\n\n\t for (var sUrlType in MockXMLHttpRequest.Mock._mocked) {\n\t var item = MockXMLHttpRequest.Mock._mocked[sUrlType]\n\t if (\n\t (!item.rurl || match(item.rurl, options.url)) &&\n\t (!item.rtype || match(item.rtype, options.type.toLowerCase()))\n\t ) {\n\t // console.log('[mock]', options.url, '>', item.rurl)\n\t return item\n\t }\n\t }\n\n\t function match(expected, actual) {\n\t if (Util.type(expected) === 'string') {\n\t return expected === actual\n\t }\n\t if (Util.type(expected) === 'regexp') {\n\t return expected.test(actual)\n\t }\n\t }\n\n\t}\n\n\t// 数据模板 => 响应数据\n\tfunction convert(item, options) {\n\t return Util.isFunction(item.template) ?\n\t item.template(options) : MockXMLHttpRequest.Mock.mock(item.template)\n\t}\n\n\tmodule.exports = MockXMLHttpRequest\n\n/***/ })\n/******/ ])\n});\n;","var Clipboard = require('clipboard/dist/clipboard.min.js') // FIXME: workaround for browserify\n\nvar VueClipboardConfig = {\n autoSetContainer: false\n};\n\nvar VueClipboard = {\n install: function (Vue) {\n Vue.prototype.$clipboardConfig = VueClipboardConfig;\n Vue.prototype.$copyText = function (text, container) {\n return new Promise(function (resolve, reject) {\n var fake_el = document.createElement('button');\n var clipboard = new Clipboard(fake_el, {\n text: function () { return text },\n action: function () { return 'copy' },\n container: typeof container === 'object' ? container : document.body\n });\n clipboard.on('success', function (e) {\n clipboard.destroy();\n resolve(e);\n });\n clipboard.on('error', function (e) {\n clipboard.destroy();\n reject(e);\n });\n fake_el.click();\n });\n };\n\n Vue.directive('clipboard', {\n bind: function (el, binding, vnode) {\n if(binding.arg === 'success') {\n el._v_clipboard_success = binding.value\n } else if(binding.arg === 'error') {\n el._v_clipboard_error = binding.value\n } else {\n var clipboard = new Clipboard(el, {\n text: function () { return binding.value },\n action: function () { return binding.arg === 'cut' ? 'cut' : 'copy' },\n container: VueClipboardConfig.autoSetContainer ? el : undefined\n })\n clipboard.on('success', function (e) {\n var callback = el._v_clipboard_success\n callback && callback(e)\n })\n clipboard.on('error', function (e) {\n var callback = el._v_clipboard_error\n callback && callback(e)\n })\n el._v_clipboard = clipboard\n }\n },\n update: function (el, binding) {\n if(binding.arg === 'success') {\n el._v_clipboard_success = binding.value\n } else if(binding.arg === 'error') {\n el._v_clipboard_error = binding.value\n } else {\n el._v_clipboard.text = function () { return binding.value }\n el._v_clipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' }\n }\n },\n unbind: function (el, binding) {\n if(binding.arg === 'success') {\n delete el._v_clipboard_success\n } else if(binding.arg === 'error') {\n delete el._v_clipboard_error\n } else {\n el._v_clipboard.destroy()\n delete el._v_clipboard\n }\n }\n })\n },\n config: VueClipboardConfig\n}\n\nif (typeof exports == \"object\") {\n module.exports = VueClipboard\n} else if (typeof define == \"function\" && define.amd) {\n define([], function() {\n return VueClipboard\n })\n}\n","/*!\n * vue-i18n v8.18.2 \n * (c) 2020 kazuya kawaguchi\n * Released under the MIT License.\n */\n/* */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n 'style',\n 'currency',\n 'currencyDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n 'localeMatcher',\n 'formatMatcher',\n 'unit'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\n\nfunction error (msg, err) {\n if (typeof console !== 'undefined') {\n console.error('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.error(err.stack);\n }\n }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n return val === null || val === undefined\n}\n\nfunction parseArgs () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var locale = null;\n var params = null;\n if (args.length === 1) {\n if (isObject(args[0]) || Array.isArray(args[0])) {\n params = args[0];\n } else if (typeof args[0] === 'string') {\n locale = args[0];\n }\n } else if (args.length === 2) {\n if (typeof args[0] === 'string') {\n locale = args[0];\n }\n /* istanbul ignore if */\n if (isObject(args[1]) || Array.isArray(args[1])) {\n params = args[1];\n }\n }\n\n return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\nfunction includes (arr, item) {\n return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n var arguments$1 = arguments;\n\n var output = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments$1[i];\n if (source !== undefined && source !== null) {\n var key = (void 0);\n for (key in source) {\n if (hasOwn(source, key)) {\n if (isObject(source[key])) {\n output[key] = merge(output[key], source[key]);\n } else {\n output[key] = source[key];\n }\n }\n }\n }\n }\n return output\n}\n\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\nvar mixin = {\n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages = {};\n options.__i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages$1 = {};\n options.__i18n.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n};\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(mixin);\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = [];\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (Array.isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var self = this;\n return this._vm.$watch('$data', function () {\n var i = self._dataListeners.length;\n while (i--) {\n Vue.nextTick(function () {\n self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (Array.isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!isString(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string!\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n Array.isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message && !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge({}, this._vm.messages[locale] || {}, message));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n var id = _locale + \"__\" + key;\n var formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n return new Intl.DateTimeFormat(locale).format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.18.2';\n\nexport default VueI18n;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"vue\"),require(\"clipboard\")):\"function\"==typeof define&&define.amd?define([\"vue\",\"clipboard\"],t):\"object\"==typeof exports?exports.JsonView=t(require(\"vue\"),require(\"clipboard\")):e.JsonView=t(e.vue,e.clipboard)}(this,function(n,o){return a={},r.m=i=[function(e,t,n){\"use strict\";function o(e,t,n,o,r,i,a,s){var u,l,c=\"function\"==typeof e?e.options:e;return t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),i&&(c._scopeId=\"data-v-\"+i),a?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=u):r&&(u=s?function(){r.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:r),u&&(c.functional?(c._injectStyles=u,l=c.render,c.render=function(e,t){return u.call(t),l(e,t)}):(s=c.beforeCreate,c.beforeCreate=s?[].concat(s,u):[u])),{exports:e,options:c}}n.d(t,\"a\",function(){return o})},function(e,t,n){\"use strict\";n.r(t);var o,r=n(2),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});a(n(29));var o=a(n(21)),r=a(n(41)),i=n(42);function a(e){return e&&e.__esModule?e:{default:e}}t.default={name:\"JsonViewer\",components:{JsonBox:o.default},props:{value:{type:[Object,Array,String,Number,Boolean,Function],required:!0},expanded:{type:Boolean,default:!1},expandDepth:{type:Number,default:1},copyable:{type:[Boolean,Object],default:!1},sort:{type:Boolean,default:!1},boxed:{type:Boolean,default:!1},theme:{type:String,default:\"jv-light\"},timeformat:{type:Function,default:function(e){return e.toLocaleString()}},previewMode:{type:Boolean,default:!1}},provide:function(){return{expandDepth:this.expandDepth,timeformat:this.timeformat}},data:function(){return{copied:!1,expandableCode:!1,expandCode:this.expanded}},computed:{jvClass:function(){return\"jv-container \"+this.theme+(this.boxed?\" boxed\":\"\")},copyText:function(){var e=this.copyable,t=e.copyText;return{copyText:t||\"copy\",copiedText:e.copiedText||\"copied!\",timeout:e.timeout||2e3}}},watch:{value:function(){this.onResized()}},mounted:function(){var t=this;this.debounceResized=(0,i.debounce)(this.debResized.bind(this),200),this.boxed&&this.$refs.jsonBox&&(this.onResized(),this.$refs.jsonBox.$el.addEventListener(\"resized\",this.onResized,!0)),this.copyable&&new r.default(this.$refs.clip,{text:function(){return JSON.stringify(t.value,null,2)}}).on(\"success\",function(e){t.onCopied(e)})},methods:{onResized:function(){this.debounceResized()},debResized:function(){var e=this;this.$nextTick(function(){e.$refs.jsonBox&&(250<=e.$refs.jsonBox.$el.clientHeight?e.expandableCode=!0:e.expandableCode=!1)})},onCopied:function(e){var t=this;this.copied||(this.copied=!0,setTimeout(function(){t.copied=!1},this.copyText.timeout),this.$emit(\"copied\",e))},toggleExpandCode:function(){this.expandCode=!this.expandCode}}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(4),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},a=o(n(30)),s=o(n(31)),u=o(n(32)),l=o(n(33)),c=o(n(34)),d=o(n(35)),f=o(n(36)),p=o(n(37));function o(e){return e&&e.__esModule?e:{default:e}}t.default={name:\"JsonBox\",inject:[\"expandDepth\"],props:{value:{type:[Object,Array,String,Number,Boolean,Function,Date],default:null},keyName:{type:String,default:\"\"},sort:Boolean,depth:{type:Number,default:0},previewMode:Boolean},data:function(){return{expand:!0}},mounted:function(){this.expand=this.previewMode||!(this.depth>=this.expandDepth)},methods:{toggle:function(){this.expand=!this.expand;try{this.$el.dispatchEvent(new Event(\"resized\"))}catch(e){var t=document.createEvent(\"Event\");t.initEvent(\"resized\",!0,!1),this.$el.dispatchEvent(t)}}},render:function(e){var t=this,n=[],o=void 0;null===this.value||void 0===this.value?o=s.default:Array.isArray(this.value)?o=d.default:\"[object Date]\"===Object.prototype.toString.call(this.value)?o=p.default:\"object\"===i(this.value)?o=c.default:\"number\"==typeof this.value?o=u.default:\"string\"==typeof this.value?o=a.default:\"boolean\"==typeof this.value?o=l.default:\"function\"==typeof this.value&&(o=f.default);var r=this.keyName&&this.value&&(Array.isArray(this.value)||\"object\"===i(this.value)&&\"[object Date]\"!==Object.prototype.toString.call(this.value));return!this.previewMode&&r&&n.push(e(\"span\",{class:{\"jv-toggle\":!0,open:!!this.expand},on:{click:this.toggle}})),this.keyName&&n.push(e(\"span\",{class:{\"jv-key\":!0},domProps:{innerText:this.keyName+\":\"}})),n.push(e(o,{class:{\"jv-push\":!0},props:{jsonValue:this.value,keyName:this.keyName,sort:this.sort,depth:this.depth,expand:this.expand,previewMode:this.previewMode},on:{\"update:expand\":function(e){t.expand=e}}})),e(\"div\",{class:{\"jv-node\":!0,toggle:!this.previewMode&&r}},n)}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(6),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=/^\\w+:\\/\\//;t.default={name:\"JsonString\",props:{jsonValue:{type:String,required:!0}},data:function(){return{expand:!1,canExtend:!1}},mounted:function(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle:function(){this.expand=!this.expand}},render:function(e){var t=this.jsonValue,n=r.test(t),o=void 0;return this.expand?o={class:{\"jv-ellipsis\":!0},on:{click:this.toggle},domProps:{innerText:\"...\"}}:(o={class:{\"jv-item\":!0,\"jv-string\":!0},ref:\"itemRef\"},n?(t='<a href=\"'+t+'\" target=\"_blank\" style=\"color: #0366d6;\">'+t+\"</a>\",o.domProps={innerHTML:'\"'+t.toString()+'\"'}):o.domProps={innerText:'\"'+t.toString()+'\"'}),e(\"span\",{},[this.canExtend&&e(\"span\",{class:{\"jv-toggle\":!0,open:this.expand},on:{click:this.toggle}}),e(\"span\",{class:{\"jv-holder-node\":!0},ref:\"holderRef\"}),e(\"span\",o)])}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(8),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"JsonUndefined\",functional:!0,props:{jsonValue:{type:Object,default:null}},render:function(e,t){return e(\"span\",{class:{\"jv-item\":!0,\"jv-undefined\":!0},domProps:{innerText:null===t.props.jsonValue?\"null\":\"undefined\"}})}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(10),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"JsonNumber\",functional:!0,props:{jsonValue:{type:Number,required:!0}},render:function(e,t){var n=t.props,t=Number.isInteger(n.jsonValue);return e(\"span\",{class:{\"jv-item\":!0,\"jv-number\":!0,\"jv-number-integer\":t,\"jv-number-float\":!t},domProps:{innerText:n.jsonValue.toString()}})}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(12),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"JsonBoolean\",functional:!0,props:{jsonValue:Boolean},render:function(e,t){return e(\"span\",{class:{\"jv-item\":!0,\"jv-boolean\":!0},domProps:{innerText:t.props.jsonValue.toString()}})}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(14),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var o,r=n(21),i=(o=r)&&o.__esModule?o:{default:o};t.default={name:\"JsonObject\",props:{jsonValue:{type:Object,required:!0},keyName:{type:String,default:\"\"},depth:{type:Number,default:0},expand:Boolean,sort:Boolean,previewMode:Boolean},data:function(){return{value:{}}},computed:{ordered:function(){var t=this;if(!this.sort)return this.value;var n={};return Object.keys(this.value).sort().forEach(function(e){n[e]=t.value[e]}),n}},watch:{jsonValue:function(e){this.setValue(e)}},mounted:function(){this.setValue(this.jsonValue)},methods:{setValue:function(e){var t=this;setTimeout(function(){t.value=e},0)},toggle:function(){this.$emit(\"update:expand\",!this.expand),this.dispatchEvent()},dispatchEvent:function(){try{this.$el.dispatchEvent(new Event(\"resized\"))}catch(e){var t=document.createEvent(\"Event\");t.initEvent(\"resized\",!0,!1),this.$el.dispatchEvent(t)}}},render:function(e){var t,n=[];if(this.previewMode||this.keyName||n.push(e(\"span\",{class:{\"jv-toggle\":!0,open:!!this.expand},on:{click:this.toggle}})),n.push(e(\"span\",{class:{\"jv-item\":!0,\"jv-object\":!0},domProps:{innerText:\"{\"}})),this.expand)for(var o in this.ordered)this.ordered.hasOwnProperty(o)&&(t=this.ordered[o],n.push(e(i.default,{key:o,style:{display:this.expand?void 0:\"none\"},props:{sort:this.sort,keyName:o,depth:this.depth+1,value:t,previewMode:this.previewMode}})));return!this.expand&&Object.keys(this.value).length&&n.push(e(\"span\",{style:{display:this.expand?\"none\":void 0},class:{\"jv-ellipsis\":!0},on:{click:this.toggle},attrs:{title:\"click to reveal object content (keys: \"+Object.keys(this.ordered).join(\", \")+\")\"},domProps:{innerText:\"...\"}})),n.push(e(\"span\",{class:{\"jv-item\":!0,\"jv-object\":!0},domProps:{innerText:\"}\"}})),e(\"span\",n)}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(16),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var o,r=n(21),i=(o=r)&&o.__esModule?o:{default:o};t.default={name:\"JsonArray\",props:{jsonValue:{type:Array,required:!0},keyName:{type:String,default:\"\"},depth:{type:Number,default:0},sort:Boolean,expand:Boolean,previewMode:Boolean},data:function(){return{value:[]}},watch:{jsonValue:function(e){this.setValue(e)}},mounted:function(){this.setValue(this.jsonValue)},methods:{setValue:function(e,t){var n=this,o=1<arguments.length&&void 0!==t?t:0;0===o&&(this.value=[]),setTimeout(function(){e.length>o&&(n.value.push(e[o]),n.setValue(e,o+1))},0)},toggle:function(){this.$emit(\"update:expand\",!this.expand);try{this.$el.dispatchEvent(new Event(\"resized\"))}catch(e){var t=document.createEvent(\"Event\");t.initEvent(\"resized\",!0,!1),this.$el.dispatchEvent(t)}}},render:function(n){var o=this,r=[];return this.previewMode||this.keyName||r.push(n(\"span\",{class:{\"jv-toggle\":!0,open:!!this.expand},on:{click:this.toggle}})),r.push(n(\"span\",{class:{\"jv-item\":!0,\"jv-array\":!0},domProps:{innerText:\"[\"}})),this.expand&&this.value.forEach(function(e,t){r.push(n(i.default,{key:t,style:{display:o.expand?void 0:\"none\"},props:{sort:o.sort,depth:o.depth+1,value:e,previewMode:o.previewMode}}))}),!this.expand&&this.value.length&&r.push(n(\"span\",{style:{display:void 0},class:{\"jv-ellipsis\":!0},on:{click:this.toggle},attrs:{title:\"click to reveal \"+this.value.length+\" hidden items\"},domProps:{innerText:\"...\"}})),r.push(n(\"span\",{class:{\"jv-item\":!0,\"jv-array\":!0},domProps:{innerText:\"]\"}})),n(\"span\",r)}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(18),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"JsonFunction\",functional:!0,props:{jsonValue:{type:Function,required:!0}},render:function(e,t){return e(\"span\",{class:{\"jv-item\":!0,\"jv-function\":!0},attrs:{title:t.props.jsonValue.toString()},domProps:{innerHTML:\"&lt;function&gt;\"}})}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(20),i=n.n(r);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);t.default=i.a},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"JsonDate\",inject:[\"timeformat\"],functional:!0,props:{jsonValue:{type:Date,required:!0}},render:function(e,t){var n=t.props,t=t.injections,n=n.jsonValue;return e(\"span\",{class:{\"jv-item\":!0,\"jv-string\":!0},domProps:{innerText:'\"'+(0,t.timeformat)(n)+'\"'}})}}},function(e,t,n){\"use strict\";n.r(t);var o,r=n(3);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);n(38);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/json-box.vue\",t.default=i.exports},function(e,t,n){\"use strict\";function o(){var e=this,t=e.$createElement;return(t=e._self._c||t)(\"div\",{class:e.jvClass},[e.copyable?t(\"div\",{staticClass:\"jv-tooltip\"},[t(\"span\",{ref:\"clip\",staticClass:\"jv-button\",class:{copied:e.copied}},[e._t(\"copy\",[e._v(\"\\n \"+e._s(e.copied?e.copyText.copiedText:e.copyText.copyText)+\"\\n \")],{copied:e.copied})],2)]):e._e(),e._v(\" \"),t(\"div\",{staticClass:\"jv-code\",class:{open:e.expandCode,boxed:e.boxed}},[t(\"json-box\",{ref:\"jsonBox\",attrs:{value:e.value,sort:e.sort,\"preview-mode\":e.previewMode}})],1),e._v(\" \"),e.expandableCode&&e.boxed?t(\"div\",{staticClass:\"jv-more\",on:{click:e.toggleExpandCode}},[t(\"span\",{staticClass:\"jv-toggle\",class:{open:!!e.expandCode}})]):e._e()])}var r=[];o._withStripped=!0,n.d(t,\"a\",function(){return o}),n.d(t,\"b\",function(){return r})},function(e,t,n){var o=n(39);\"string\"==typeof o&&(o=[[e.i,o,\"\"]]);var r={hmr:!0,transform:void 0};n(25)(o,r);o.locals&&(e.exports=o.locals)},function(e,t,n){\"use strict\";e.exports=function(n){var u=[];return u.toString=function(){return this.map(function(e){var t=function(e,t){var n=e[1]||\"\",o=e[3];if(!o)return n;if(t&&\"function\"==typeof btoa){e=function(e){e=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),e=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(e);return\"/*# \".concat(e,\" */\")}(o),t=o.sources.map(function(e){return\"/*# sourceURL=\".concat(o.sourceRoot||\"\").concat(e,\" */\")});return[n].concat(t).concat([e]).join(\"\\n\")}return[n].join(\"\\n\")}(e,n);return e[2]?\"@media \".concat(e[2],\" {\").concat(t,\"}\"):t}).join(\"\")},u.i=function(e,t,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);var o={};if(n)for(var r=0;r<this.length;r++){var i=this[r][0];null!=i&&(o[i]=!0)}for(var a=0;a<e.length;a++){var s=[].concat(e[a]);n&&o[s[0]]||(t&&(s[2]?s[2]=\"\".concat(t,\" and \").concat(s[2]):s[2]=t),u.push(s))}},u}},function(e,t,n){var o,r,i,u={},l=(o=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===r&&(r=o.apply(this,arguments)),r}),a=(i={},function(e){if(void 0===i[e]){var t=function(e){return document.querySelector(e)}.call(this,e);if(t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}i[e]=t}return i[e]}),s=null,c=0,d=[],f=n(40);function p(e,t){for(var n=0;n<e.length;n++){var o=e[n],r=u[o.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](o.parts[i]);for(;i<o.parts.length;i++)r.parts.push(g(o.parts[i],t))}else{for(var a=[],i=0;i<o.parts.length;i++)a.push(g(o.parts[i],t));u[o.id]={id:o.id,refs:1,parts:a}}}}function v(e,t){for(var n=[],o={},r=0;r<e.length;r++){var i=e[r],a=t.base?i[0]+t.base:i[0],i={css:i[1],media:i[2],sourceMap:i[3]};o[a]?o[a].parts.push(i):n.push(o[a]={id:a,parts:[i]})}return n}function h(e,t){var n=a(e.insertInto);if(!n)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");var o=d[d.length-1];if(\"top\"===e.insertAt)o?o.nextSibling?n.insertBefore(t,o.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),d.push(t);else if(\"bottom\"===e.insertAt)n.appendChild(t);else{if(\"object\"!=typeof e.insertAt||!e.insertAt.before)throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");e=a(e.insertInto+\" \"+e.insertAt.before);n.insertBefore(t,e)}}function b(e){null!==e.parentNode&&(e.parentNode.removeChild(e),0<=(e=d.indexOf(e))&&d.splice(e,1))}function j(e){var t=document.createElement(\"style\");return e.attrs.type=\"text/css\",m(t,e.attrs),h(e,t),t}function m(t,n){Object.keys(n).forEach(function(e){t.setAttribute(e,n[e])})}function g(t,e){var n,o,r,i,a;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}return r=e.singleton?(a=c++,n=s=s||j(e),o=_.bind(null,n,a,!1),_.bind(null,n,a,!0)):t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(i=e,a=document.createElement(\"link\"),i.attrs.type=\"text/css\",i.attrs.rel=\"stylesheet\",m(a,i.attrs),h(i,a),o=function(e,t,n){var o=n.css,r=n.sourceMap,n=void 0===t.convertToAbsoluteUrls&&r;(t.convertToAbsoluteUrls||n)&&(o=f(o));r&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");r=new Blob([o],{type:\"text/css\"}),o=e.href;e.href=URL.createObjectURL(r),o&&URL.revokeObjectURL(o)}.bind(null,n=a,e),function(){b(n),n.href&&URL.revokeObjectURL(n.href)}):(n=j(e),o=function(e,t){var n=t.css,t=t.media;t&&e.setAttribute(\"media\",t);if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}.bind(null,n),function(){b(n)}),o(t),function(e){e?e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap||o(t=e):r()}}e.exports=function(e,a){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(a=a||{}).attrs=\"object\"==typeof a.attrs?a.attrs:{},a.singleton||\"boolean\"==typeof a.singleton||(a.singleton=l()),a.insertInto||(a.insertInto=\"head\"),a.insertAt||(a.insertAt=\"bottom\");var s=v(e,a);return p(s,a),function(e){for(var t=[],n=0;n<s.length;n++){var o=s[n];(r=u[o.id]).refs--,t.push(r)}e&&p(v(e,a),a);for(var r,n=0;n<t.length;n++)if(0===(r=t[n]).refs){for(var i=0;i<r.parts.length;i++)r.parts[i]();delete u[r.id]}}};var y,x=(y=[],function(e,t){return y[e]=t,y.filter(Boolean).join(\"\\n\")});function _(e,t,n,o){n=n?\"\":o.css;e.styleSheet?e.styleSheet.cssText=x(t,n):(o=document.createTextNode(n),(n=e.childNodes)[t]&&e.removeChild(n[t]),n.length?e.insertBefore(o,n[t]):e.appendChild(o))}},function(e,t,n){var o=n(44);\"string\"==typeof o&&(o=[[e.i,o,\"\"]]);var r={hmr:!0,transform:void 0};n(25)(o,r);o.locals&&(e.exports=o.locals)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var o,r=n(28),i=(o=r)&&o.__esModule?o:{default:o};t.default=Object.assign(i.default,{install:function(e){e.component(\"JsonViewer\",i.default)}})},function(e,t,n){\"use strict\";n.r(t);var o,r=n(22),i=n(1);for(o in i)\"default\"!==o&&function(e){n.d(t,e,function(){return i[e]})}(o);n(43);var a=n(0),r=Object(a.a)(i.default,r.a,r.b,!1,null,null,null);r.options.__file=\"lib/json-viewer.vue\",t.default=r.exports},function(e,t){e.exports=n},function(e,t,n){\"use strict\";n.r(t);var o,r=n(5);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-string.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(7);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-undefined.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(9);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-number.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(11);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-boolean.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(13);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-object.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(15);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-array.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(17);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-function.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n.r(t);var o,r=n(19);for(o in r)\"default\"!==o&&function(e){n.d(t,e,function(){return r[e]})}(o);var i=n(0),i=Object(i.a)(r.default,void 0,void 0,!1,null,null,null);i.options.__file=\"lib/types/json-date.vue\",t.default=i.exports},function(e,t,n){\"use strict\";n(23)},function(e,t,n){(t=n(24)(!1)).push([e.i,\".jv-node{position:relative}.jv-node:after{content:','}.jv-node:last-of-type:after{content:''}.jv-node.toggle{margin-left:13px !important}.jv-node .jv-node{margin-left:25px}\\n\",\"\"]),e.exports=t},function(e,t){e.exports=function(e){var t=\"undefined\"!=typeof window&&window.location;if(!t)throw new Error(\"fixUrls requires window.location\");if(!e||\"string\"!=typeof e)return e;var n=t.protocol+\"//\"+t.host,o=n+t.pathname.replace(/\\/[^\\/]*$/,\"/\");return e.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,function(e,t){t=t.trim().replace(/^\"(.*)\"$/,function(e,t){return t}).replace(/^'(.*)'$/,function(e,t){return t});return/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(t)?e:(t=0===t.indexOf(\"//\")?t:0===t.indexOf(\"/\")?n+t:o+t.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(t)+\")\")})}},function(e,t){e.exports=o},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.debounce=function(o,r){var i=Date.now(),a=void 0;return function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];Date.now()-i<r&&a&&clearTimeout(a),a=setTimeout(function(){o.apply(void 0,t)},r),i=Date.now()}}},function(e,t,n){\"use strict\";n(26)},function(e,t,n){var o=n(24),r=n(45),n=n(46);t=o(!1);n=r(n);t.push([e.i,\".jv-container{box-sizing:border-box;position:relative}.jv-container.boxed{border:1px solid #eee;border-radius:6px}.jv-container.boxed:hover{box-shadow:0 2px 7px rgba(0,0,0,0.15);border-color:transparent;position:relative}.jv-container.jv-light{background:#fff;white-space:nowrap;color:#525252;font-size:14px;font-family:Consolas, Menlo, Courier, monospace}.jv-container.jv-light .jv-ellipsis{color:#999;background-color:#eee;display:inline-block;line-height:0.9;font-size:0.9em;padding:0px 4px 2px 4px;margin:0 4px;border-radius:3px;vertical-align:2px;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.jv-container.jv-light .jv-button{color:#49b3ff}.jv-container.jv-light .jv-key{color:#111111;margin-right:4px}.jv-container.jv-light .jv-item.jv-array{color:#111111}.jv-container.jv-light .jv-item.jv-boolean{color:#fc1e70}.jv-container.jv-light .jv-item.jv-function{color:#067bca}.jv-container.jv-light .jv-item.jv-number{color:#fc1e70}.jv-container.jv-light .jv-item.jv-object{color:#111111}.jv-container.jv-light .jv-item.jv-undefined{color:#e08331}.jv-container.jv-light .jv-item.jv-string{color:#42b983;word-break:break-word;white-space:normal}.jv-container.jv-light .jv-code .jv-toggle:before{padding:0px 2px;border-radius:2px}.jv-container.jv-light .jv-code .jv-toggle:hover:before{background:#eee}.jv-container .jv-code{overflow:hidden;padding:20px}.jv-container .jv-code.boxed{max-height:300px}.jv-container .jv-code.open{max-height:initial !important;overflow:visible;overflow-x:auto;padding-bottom:45px}.jv-container .jv-toggle{background-image:url(\"+n+');background-repeat:no-repeat;background-size:contain;background-position:center center;cursor:pointer;width:10px;height:10px;margin-right:2px;display:inline-block;-webkit-transition:-webkit-transform 0.1s;transition:-webkit-transform 0.1s;transition:transform 0.1s;transition:transform 0.1s, -webkit-transform 0.1s}.jv-container .jv-toggle.open{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jv-container .jv-more{position:absolute;z-index:1;bottom:0;left:0;right:0;height:40px;width:100%;text-align:center;cursor:pointer}.jv-container .jv-more .jv-toggle{position:relative;top:40%;z-index:2;color:#888;-webkit-transition:all 0.1s;transition:all 0.1s;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jv-container .jv-more .jv-toggle.open{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.jv-container .jv-more:after{content:\"\";width:100%;height:100%;position:absolute;bottom:0;left:0;z-index:1;background:-webkit-linear-gradient(top, rgba(0,0,0,0) 20%, rgba(230,230,230,0.3) 100%);background:linear-gradient(to bottom, rgba(0,0,0,0) 20%, rgba(230,230,230,0.3) 100%);-webkit-transition:all 0.1s;transition:all 0.1s}.jv-container .jv-more:hover .jv-toggle{top:50%;color:#111}.jv-container .jv-more:hover:after{background:-webkit-linear-gradient(top, rgba(0,0,0,0) 20%, rgba(230,230,230,0.3) 100%);background:linear-gradient(to bottom, rgba(0,0,0,0) 20%, rgba(230,230,230,0.3) 100%)}.jv-container .jv-button{position:relative;cursor:pointer;display:inline-block;padding:5px;z-index:5}.jv-container .jv-button.copied{opacity:0.4;cursor:default}.jv-container .jv-tooltip{position:absolute;right:15px;top:10px}.jv-container .j-icon{font-size:12px}\\n',\"\"]),e.exports=t},function(e,t,n){\"use strict\";e.exports=function(e,t){return t=t||{},\"string\"!=typeof(e=e&&e.__esModule?e.default:e)?e:(/^['\"].*['\"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/[\"'() \\t\\n]/.test(e)||t.needQuotes?'\"'.concat(e.replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\"),'\"'):e)}},function(e,t){e.exports=\"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIAo8cG9seWdvbiBwb2ludHM9IjAsMCA4LDggMCwxNiIKc3R5bGU9ImZpbGw6IzY2NjtzdHJva2U6cHVycGxlO3N0cm9rZS13aWR0aDowIiAvPgo8L3N2Zz4=\"}],r.c=a,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=27);function r(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return i[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var i,a});","/*!\n * vue-router v3.3.4\n * (c) 2020 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isRouterError (err, errorType) {\n return isError(err) && err._isRouter && (errorType == null || err.type === errorType)\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cachce\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"RouterLink with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\nvar NavigationFailureType = {\n redirected: 1,\n aborted: 2,\n cancelled: 3,\n duplicated: 4\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n )\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(\n route,\n function () {\n var prev = this$1.current;\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n // Initial redirection should still trigger the onReady onSuccess\n // https://github.com/vuejs/vue-router/issues/3225\n if (!isRouterError(err, NavigationFailureType.redirected)) {\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isRouterError(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardownListeners = function teardownListeners () {\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) {\n href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n } else { href = decodeURI(href); }\n } else {\n href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n }\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n },\n function (err) {\n if (isRouterError(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this$1.history.teardownListeners();\n }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var setupListeners = function () {\n history.setupListeners();\n };\n history.transitionTo(history.getCurrentLocation(), setupListeners, setupListeners);\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(\n to,\n current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.3.4';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.11';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vuetify\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"Vuetify\"] = factory(root[\"Vue\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_vue__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./src/components/VAlert/VAlert.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VAlert/VAlert.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_alerts_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_alerts.styl */ \"./src/stylus/components/_alerts.styl\");\n/* harmony import */ var _stylus_components_alerts_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_alerts_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n\n// Components\n\n// Mixins\n\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_transitionable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]).extend({\n name: 'v-alert',\n props: {\n dismissible: Boolean,\n icon: String,\n outline: Boolean,\n type: {\n type: String,\n validator: function validator(val) {\n return ['info', 'error', 'success', 'warning'].includes(val);\n }\n }\n },\n computed: {\n computedColor: function computedColor() {\n return this.type && !this.color ? this.type : this.color || 'error';\n },\n computedIcon: function computedIcon() {\n if (this.icon || !this.type) return this.icon;\n switch (this.type) {\n case 'info':\n return '$vuetify.icons.info';\n case 'error':\n return '$vuetify.icons.error';\n case 'success':\n return '$vuetify.icons.success';\n case 'warning':\n return '$vuetify.icons.warning';\n }\n }\n },\n methods: {\n genIcon: function genIcon() {\n if (!this.computedIcon) return null;\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n 'class': 'v-alert__icon'\n }, this.computedIcon);\n },\n genDismissible: function genDismissible() {\n var _this = this;\n if (!this.dismissible) return null;\n return this.$createElement('a', {\n 'class': 'v-alert__dismissible',\n on: { click: function click() {\n _this.isActive = false;\n } }\n }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n right: true\n }\n }, '$vuetify.icons.cancel')]);\n }\n },\n render: function render(h) {\n var children = [this.genIcon(), h('div', this.$slots.default), this.genDismissible()];\n var setColor = this.outline ? this.setTextColor : this.setBackgroundColor;\n var alert = h('div', setColor(this.computedColor, {\n staticClass: 'v-alert',\n 'class': {\n 'v-alert--outline': this.outline\n },\n directives: [{\n name: 'show',\n value: this.isActive\n }],\n on: this.$listeners\n }), children);\n if (!this.transition) return alert;\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode\n }\n }, [alert]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAlert/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VAlert/index.ts ***!\n \\****************************************/\n/*! exports provided: VAlert, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAlert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAlert */ \"./src/components/VAlert/VAlert.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAlert\", function() { return _VAlert__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAlert__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VApp/VApp.js\":\n/*!*************************************!*\\\n !*** ./src/components/VApp/VApp.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_app_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_app.styl */ \"./src/stylus/components/_app.styl\");\n/* harmony import */ var _stylus_components_app_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_app_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_app_theme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mixins/app-theme */ \"./src/components/VApp/mixins/app-theme.js\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Component level mixins\n\n\n// Directives\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-app',\n directives: {\n Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_mixins_app_theme__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n id: {\n type: String,\n default: 'app'\n },\n dark: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'application--is-rtl': this.$vuetify.rtl }, this.themeClasses);\n }\n },\n watch: {\n dark: function dark() {\n this.$vuetify.dark = this.dark;\n }\n },\n mounted: function mounted() {\n this.$vuetify.dark = this.dark;\n },\n render: function render(h) {\n var data = {\n staticClass: 'application',\n 'class': this.classes,\n attrs: { 'data-app': true },\n domProps: { id: this.id }\n };\n var wrapper = h('div', { staticClass: 'application--wrap' }, this.$slots.default);\n return h('div', data, [wrapper]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VApp/index.js\":\n/*!**************************************!*\\\n !*** ./src/components/VApp/index.js ***!\n \\**************************************/\n/*! exports provided: VApp, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VApp */ \"./src/components/VApp/VApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VApp\", function() { return _VApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VApp/mixins/app-theme.js\":\n/*!*************************************************!*\\\n !*** ./src/components/VApp/mixins/app-theme.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_theme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/theme */ \"./src/util/theme.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n style: null\n };\n },\n computed: {\n parsedTheme: function parsedTheme() {\n return _util_theme__WEBPACK_IMPORTED_MODULE_0__[\"parse\"](this.$vuetify.theme);\n },\n /** @return string */\n generatedStyles: function generatedStyles() {\n var theme = this.parsedTheme;\n var css;\n if (this.$vuetify.options.themeCache != null) {\n css = this.$vuetify.options.themeCache.get(theme);\n if (css != null) return css;\n }\n css = _util_theme__WEBPACK_IMPORTED_MODULE_0__[\"genStyles\"](theme, this.$vuetify.options.customProperties);\n if (this.$vuetify.options.minifyTheme != null) {\n css = this.$vuetify.options.minifyTheme(css);\n }\n if (this.$vuetify.options.themeCache != null) {\n this.$vuetify.options.themeCache.set(theme, css);\n }\n return css;\n },\n vueMeta: function vueMeta() {\n if (this.$vuetify.theme === false) return {};\n var options = {\n cssText: this.generatedStyles,\n id: 'vuetify-theme-stylesheet',\n type: 'text/css'\n };\n if (this.$vuetify.options.cspNonce) {\n options.nonce = this.$vuetify.options.cspNonce;\n }\n return {\n style: [options]\n };\n }\n },\n // Regular vue-meta\n metaInfo: function metaInfo() {\n return this.vueMeta;\n },\n // Nuxt\n head: function head() {\n return this.vueMeta;\n },\n watch: {\n generatedStyles: function generatedStyles() {\n !this.meta && this.applyTheme();\n }\n },\n created: function created() {\n if (this.$vuetify.theme === false) return;\n if (this.$meta) {\n // Vue-meta\n // Handled by metaInfo()/nuxt()\n } else if (typeof document === 'undefined' && this.$ssrContext) {\n // SSR\n var nonce = this.$vuetify.options.cspNonce ? \" nonce=\\\"\" + this.$vuetify.options.cspNonce + \"\\\"\" : '';\n this.$ssrContext.head = this.$ssrContext.head || '';\n this.$ssrContext.head += \"<style type=\\\"text/css\\\" id=\\\"vuetify-theme-stylesheet\\\"\" + nonce + \">\" + this.generatedStyles + \"</style>\";\n } else if (typeof document !== 'undefined') {\n // Client-side\n this.genStyle();\n this.applyTheme();\n }\n },\n methods: {\n applyTheme: function applyTheme() {\n if (this.style) this.style.innerHTML = this.generatedStyles;\n },\n genStyle: function genStyle() {\n var style = document.getElementById('vuetify-theme-stylesheet');\n if (!style) {\n style = document.createElement('style');\n style.type = 'text/css';\n style.id = 'vuetify-theme-stylesheet';\n if (this.$vuetify.options.cspNonce) {\n style.setAttribute('nonce', this.$vuetify.options.cspNonce);\n }\n document.head.appendChild(style);\n }\n this.style = style;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VAutocomplete/VAutocomplete.js\":\n/*!*******************************************************!*\\\n !*** ./src/components/VAutocomplete/VAutocomplete.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_autocompletes.styl */ \"./src/stylus/components/_autocompletes.styl\");\n/* harmony import */ var _stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.js\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.js\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Extensions\n\n\n// Utils\n\nvar defaultMenuProps = __assign({}, _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"defaultMenuProps\"], { offsetY: true, offsetOverflow: true, transition: false });\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-autocomplete',\n props: {\n allowOverflow: {\n type: Boolean,\n default: true\n },\n browserAutocomplete: {\n type: String,\n default: 'off'\n },\n filter: {\n type: Function,\n default: function _default(item, queryText, itemText) {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n }\n },\n hideNoData: Boolean,\n noFilter: Boolean,\n searchInput: {\n default: undefined\n },\n menuProps: {\n type: _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.props.menuProps.type,\n default: function _default() {\n return defaultMenuProps;\n }\n },\n autoSelectFirst: {\n type: Boolean,\n default: false\n }\n },\n data: function data(vm) {\n return {\n attrsInput: null,\n lazySearch: vm.searchInput\n };\n },\n computed: {\n classes: function classes() {\n return Object.assign({}, _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this), {\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n });\n },\n computedItems: function computedItems() {\n return this.filteredItems;\n },\n selectedValues: function selectedValues() {\n var _this = this;\n return this.selectedItems.map(function (item) {\n return _this.getValue(item);\n });\n },\n hasDisplayedItems: function hasDisplayedItems() {\n var _this = this;\n return this.hideSelected ? this.filteredItems.some(function (item) {\n return !_this.hasItem(item);\n }) : this.filteredItems.length > 0;\n },\n /**\n * The range of the current input text\n *\n * @return {Number}\n */\n currentRange: function currentRange() {\n if (this.selectedItem == null) return 0;\n return this.getText(this.selectedItem).toString().length;\n },\n filteredItems: function filteredItems() {\n var _this = this;\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n return this.allItems.filter(function (item) {\n return _this.filter(item, _this.internalSearch.toString(), _this.getText(item).toString());\n });\n },\n internalSearch: {\n get: function get() {\n return this.lazySearch;\n },\n set: function set(val) {\n this.lazySearch = val;\n this.$emit('update:searchInput', val);\n }\n },\n isAnyValueAllowed: function isAnyValueAllowed() {\n return false;\n },\n isDirty: function isDirty() {\n return this.searchIsDirty || this.selectedItems.length > 0;\n },\n isSearching: function isSearching() {\n if (this.multiple) return this.searchIsDirty;\n return this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n },\n menuCanShow: function menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !this.hideNoData;\n },\n $_menuProps: function $_menuProps() {\n var props = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.$_menuProps.call(this);\n props.contentClass = (\"v-autocomplete__content \" + (props.contentClass || '')).trim();\n return __assign({}, defaultMenuProps, props);\n },\n searchIsDirty: function searchIsDirty() {\n return this.internalSearch != null && this.internalSearch !== '';\n },\n selectedItem: function selectedItem() {\n var _this = this;\n if (this.multiple) return null;\n return this.selectedItems.find(function (i) {\n return _this.valueComparator(_this.getValue(i), _this.getValue(_this.internalValue));\n });\n },\n listData: function listData() {\n var data = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.listData.call(this);\n Object.assign(data.props, {\n items: this.virtualizedItems,\n noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n searchInput: this.internalSearch\n });\n return data;\n }\n },\n watch: {\n filteredItems: function filteredItems(val) {\n this.onFilteredItemsChanged(val);\n },\n internalValue: function internalValue() {\n this.setSearch();\n },\n isFocused: function isFocused(val) {\n if (val) {\n this.$refs.input && this.$refs.input.select();\n } else {\n this.updateSelf();\n }\n },\n isMenuActive: function isMenuActive(val) {\n if (val || !this.hasSlot) return;\n this.lazySearch = null;\n },\n items: function items(val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n },\n searchInput: function searchInput(val) {\n this.lazySearch = val;\n },\n internalSearch: function internalSearch(val) {\n this.onInternalSearchChanged(val);\n },\n itemText: function itemText() {\n this.updateSelf();\n }\n },\n created: function created() {\n this.setSearch();\n },\n methods: {\n onFilteredItemsChanged: function onFilteredItemsChanged(val) {\n var _this = this;\n this.setMenuIndex(-1);\n this.$nextTick(function () {\n _this.setMenuIndex(val.length > 0 && (val.length === 1 || _this.autoSelectFirst) ? 0 : -1);\n });\n },\n onInternalSearchChanged: function onInternalSearchChanged(val) {\n this.updateMenuDimensions();\n },\n updateMenuDimensions: function updateMenuDimensions() {\n if (this.isMenuActive && this.$refs.menu) {\n this.$refs.menu.updateDimensions();\n }\n },\n changeSelectedIndex: function changeSelectedIndex(keyCode) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return;\n if (![_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].backspace, _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].left, _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].right, _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].delete].includes(keyCode)) return;\n var indexes = this.selectedItems.length - 1;\n if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].left) {\n this.selectedIndex = this.selectedIndex === -1 ? indexes : this.selectedIndex - 1;\n } else if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].right) {\n this.selectedIndex = this.selectedIndex >= indexes ? -1 : this.selectedIndex + 1;\n } else if (this.selectedIndex === -1) {\n this.selectedIndex = indexes;\n return;\n }\n var currentItem = this.selectedItems[this.selectedIndex];\n if ([_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].backspace, _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].delete].includes(keyCode) && !this.getDisabled(currentItem)) {\n var newIndex = this.selectedIndex === indexes ? this.selectedIndex - 1 : this.selectedItems[this.selectedIndex + 1] ? this.selectedIndex : -1;\n if (newIndex === -1) {\n this.setValue(this.multiple ? [] : undefined);\n } else {\n this.selectItem(currentItem);\n }\n this.selectedIndex = newIndex;\n }\n },\n clearableCallback: function clearableCallback() {\n this.internalSearch = undefined;\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.clearableCallback.call(this);\n },\n genInput: function genInput() {\n var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genInput.call(this);\n input.data.attrs.role = 'combobox';\n input.data.domProps.value = this.internalSearch;\n return input;\n },\n genSelections: function genSelections() {\n return this.hasSlot || this.multiple ? _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genSelections.call(this) : [];\n },\n onClick: function onClick() {\n if (this.isDisabled) return;\n this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n this.activateMenu();\n },\n onEnterDown: function onEnterDown() {\n // Avoid invoking this method\n // will cause updateSelf to\n // be called emptying search\n },\n onInput: function onInput(e) {\n if (this.selectedIndex > -1) return;\n // If typing and menu is not currently active\n if (e.target.value) {\n this.activateMenu();\n if (!this.isAnyValueAllowed) this.setMenuIndex(0);\n }\n this.mask && this.resetSelections(e.target);\n this.internalSearch = e.target.value;\n this.badInput = e.target.validity && e.target.validity.badInput;\n },\n onKeyDown: function onKeyDown(e) {\n var keyCode = e.keyCode;\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onKeyDown.call(this, e);\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode);\n },\n onTabDown: function onTabDown(e) {\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onTabDown.call(this, e);\n this.updateSelf();\n },\n selectItem: function selectItem(item) {\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.selectItem.call(this, item);\n this.setSearch();\n },\n setSelectedItems: function setSelectedItems() {\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setSelectedItems.call(this);\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch();\n },\n setSearch: function setSearch() {\n var _this = this;\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(function () {\n _this.internalSearch = _this.multiple && _this.internalSearch && _this.isMenuActive ? _this.internalSearch : !_this.selectedItems.length || _this.multiple || _this.hasSlot ? null : _this.getText(_this.selectedItem);\n });\n },\n updateSelf: function updateSelf() {\n this.updateAutocomplete();\n },\n updateAutocomplete: function updateAutocomplete() {\n if (!this.searchIsDirty && !this.internalValue) return;\n if (!this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n this.setSearch();\n }\n },\n hasItem: function hasItem(item) {\n return this.selectedValues.indexOf(this.getValue(item)) > -1;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAutocomplete/index.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VAutocomplete/index.js ***!\n \\***********************************************/\n/*! exports provided: VAutocomplete, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAutocomplete */ \"./src/components/VAutocomplete/VAutocomplete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAutocomplete\", function() { return _VAutocomplete__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAutocomplete__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VAvatar/VAvatar.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VAvatar/VAvatar.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_avatars_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_avatars.styl */ \"./src/stylus/components/_avatars.styl\");\n/* harmony import */ var _stylus_components_avatars_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_avatars_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Mixins\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-avatar',\n functional: true,\n props: {\n // TODO: inherit these\n color: String,\n size: {\n type: [Number, String],\n default: 48\n },\n tile: Boolean\n },\n render: function render(h, _a) {\n var data = _a.data,\n props = _a.props,\n children = _a.children;\n data.staticClass = (\"v-avatar \" + (data.staticClass || '')).trim();\n if (props.tile) data.staticClass += ' v-avatar--tile';\n var size = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(props.size);\n data.style = __assign({ height: size, width: size }, data.style);\n return h('div', _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setBackgroundColor(props.color, data), children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VAvatar/index.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VAvatar/index.ts ***!\n \\*****************************************/\n/*! exports provided: VAvatar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VAvatar */ \"./src/components/VAvatar/VAvatar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAvatar\", function() { return _VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBadge/VBadge.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VBadge/VBadge.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_badges_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_badges.styl */ \"./src/stylus/components/_badges.styl\");\n/* harmony import */ var _stylus_components_badges_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_badges_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n\n// Mixins\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object(_mixins_positionable__WEBPACK_IMPORTED_MODULE_3__[\"factory\"])(['left', 'bottom']), _mixins_transitionable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-badge',\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n overlap: Boolean,\n transition: {\n type: String,\n default: 'fab-transition'\n },\n value: {\n default: true\n }\n },\n computed: {\n classes: function classes() {\n return {\n 'v-badge--bottom': this.bottom,\n 'v-badge--left': this.left,\n 'v-badge--overlap': this.overlap\n };\n }\n },\n render: function render(h) {\n var badge = this.$slots.badge && [h('span', this.setBackgroundColor(this.color, {\n staticClass: 'v-badge__badge',\n attrs: this.$attrs,\n directives: [{\n name: 'show',\n value: this.isActive\n }]\n }), this.$slots.badge)];\n return h('span', {\n staticClass: 'v-badge',\n 'class': this.classes\n }, [this.$slots.default, h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode\n }\n }, badge)]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBadge/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VBadge/index.ts ***!\n \\****************************************/\n/*! exports provided: VBadge, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBadge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBadge */ \"./src/components/VBadge/VBadge.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBadge\", function() { return _VBadge__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBadge__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBottomNav/VBottomNav.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VBottomNav/VBottomNav.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_bottom_navs_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_bottom-navs.styl */ \"./src/stylus/components/_bottom-navs.styl\");\n/* harmony import */ var _stylus_components_bottom_navs_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_bottom_navs_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable.ts\");\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n\n// Mixins\n\n\n\n\n// Util\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('bottom', ['height', 'value']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-bottom-nav',\n props: {\n active: [Number, String],\n mandatory: Boolean,\n height: {\n default: 56,\n type: [Number, String],\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n shift: Boolean,\n value: null\n },\n computed: {\n classes: function classes() {\n return {\n 'v-bottom-nav--absolute': this.absolute,\n 'v-bottom-nav--fixed': !this.absolute && (this.app || this.fixed),\n 'v-bottom-nav--shift': this.shift,\n 'v-bottom-nav--active': this.value\n };\n },\n computedHeight: function computedHeight() {\n return parseInt(this.height);\n }\n },\n methods: {\n updateApplication: function updateApplication() {\n return !this.value ? 0 : this.computedHeight;\n },\n updateValue: function updateValue(val) {\n this.$emit('update:active', val);\n }\n },\n render: function render(h) {\n return h(_mixins_button_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], this.setBackgroundColor(this.color, {\n staticClass: 'v-bottom-nav',\n class: this.classes,\n style: {\n height: parseInt(this.computedHeight) + \"px\"\n },\n props: {\n mandatory: Boolean(this.mandatory || this.active !== undefined),\n value: this.active\n },\n on: { change: this.updateValue }\n }), this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBottomNav/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VBottomNav/index.ts ***!\n \\********************************************/\n/*! exports provided: VBottomNav, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomNav__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomNav */ \"./src/components/VBottomNav/VBottomNav.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomNav\", function() { return _VBottomNav__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBottomNav__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBottomSheet/VBottomSheet.js\":\n/*!*****************************************************!*\\\n !*** ./src/components/VBottomSheet/VBottomSheet.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_bottom_sheets_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_bottom-sheets.styl */ \"./src/stylus/components/_bottom-sheets.styl\");\n/* harmony import */ var _stylus_components_bottom_sheets_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_bottom_sheets_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VDialog/VDialog */ \"./src/components/VDialog/VDialog.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-bottom-sheet',\n props: {\n disabled: Boolean,\n fullWidth: Boolean,\n hideOverlay: Boolean,\n inset: Boolean,\n lazy: Boolean,\n maxWidth: {\n type: [String, Number],\n default: 'auto'\n },\n persistent: Boolean,\n value: null\n },\n render: function render(h) {\n var activator = h('template', {\n slot: 'activator'\n }, this.$slots.activator);\n var contentClass = ['v-bottom-sheet', this.inset ? 'v-bottom-sheet--inset' : ''].join(' ');\n return h(_VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n attrs: __assign({}, this.$props),\n on: __assign({}, this.$listeners),\n props: {\n contentClass: contentClass,\n noClickAnimation: true,\n transition: 'bottom-sheet-transition',\n value: this.value\n }\n }, [activator, this.$slots.default]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VBottomSheet/index.js\":\n/*!**********************************************!*\\\n !*** ./src/components/VBottomSheet/index.js ***!\n \\**********************************************/\n/*! exports provided: VBottomSheet, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBottomSheet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBottomSheet */ \"./src/components/VBottomSheet/VBottomSheet.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheet\", function() { return _VBottomSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBottomSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbs.ts\":\n/*!*****************************************************!*\\\n !*** ./src/components/VBreadcrumbs/VBreadcrumbs.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_breadcrumbs_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_breadcrumbs.styl */ \"./src/stylus/components/_breadcrumbs.styl\");\n/* harmony import */ var _stylus_components_breadcrumbs_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_breadcrumbs_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ \"./src/components/VBreadcrumbs/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Components\n\n// Mixins\n\n// Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-breadcrumbs',\n props: {\n divider: {\n type: String,\n default: '/'\n },\n items: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n large: Boolean,\n justifyCenter: Boolean,\n justifyEnd: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-breadcrumbs--large': this.large, 'justify-center': this.justifyCenter, 'justify-end': this.justifyEnd }, this.themeClasses);\n }\n },\n mounted: function mounted() {\n if (this.justifyCenter) Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"deprecate\"])('justify-center', 'class=\"justify-center\"', this);\n if (this.justifyEnd) Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"deprecate\"])('justify-end', 'class=\"justify-end\"', this);\n if (this.$slots.default) Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"deprecate\"])('default slot', ':items and scoped slot \"item\"', this);\n },\n methods: {\n /* @deprecated */\n genChildren /* istanbul ignore next */: function genChildren() {\n if (!this.$slots.default) return undefined;\n var children = [];\n var createDividers = false;\n for (var i = 0; i < this.$slots.default.length; i++) {\n var elm = this.$slots.default[i];\n if (!elm.componentOptions || elm.componentOptions.Ctor.options.name !== 'v-breadcrumbs-item') {\n children.push(elm);\n } else {\n if (createDividers) {\n children.push(this.genDivider());\n }\n children.push(elm);\n createDividers = true;\n }\n }\n return children;\n },\n genDivider: function genDivider() {\n return this.$createElement(___WEBPACK_IMPORTED_MODULE_1__[\"VBreadcrumbsDivider\"], this.$slots.divider ? this.$slots.divider : this.divider);\n },\n genItems: function genItems() {\n var items = [];\n var hasSlot = !!this.$scopedSlots.item;\n var keys = [];\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n keys.push(item.text);\n if (hasSlot) items.push(this.$scopedSlots.item({ item: item }));else items.push(this.$createElement(___WEBPACK_IMPORTED_MODULE_1__[\"VBreadcrumbsItem\"], { key: keys.join('.'), props: item }, [item.text]));\n if (i < this.items.length - 1) items.push(this.genDivider());\n }\n return items;\n }\n },\n render: function render(h) {\n var children = this.$slots.default ? this.genChildren() : this.genItems();\n return h('ul', {\n staticClass: 'v-breadcrumbs',\n 'class': this.classes\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/VBreadcrumbsItem.ts\":\n/*!*********************************************************!*\\\n !*** ./src/components/VBreadcrumbs/VBreadcrumbsItem.ts ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_routable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n name: 'v-breadcrumbs-item',\n props: {\n // In a breadcrumb, the currently\n // active item should be dimmed\n activeClass: {\n type: String,\n default: 'v-breadcrumbs__item--disabled'\n }\n },\n computed: {\n classes: function classes() {\n var _a;\n return _a = {\n 'v-breadcrumbs__item': true\n }, _a[this.activeClass] = this.disabled, _a;\n }\n },\n render: function render(h) {\n var _a = this.generateRouteLink(this.classes),\n tag = _a.tag,\n data = _a.data;\n return h('li', [h(tag, data, this.$slots.default)]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBreadcrumbs/index.ts\":\n/*!**********************************************!*\\\n !*** ./src/components/VBreadcrumbs/index.ts ***!\n \\**********************************************/\n/*! exports provided: VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsDivider\", function() { return VBreadcrumbsDivider; });\n/* harmony import */ var _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBreadcrumbs */ \"./src/components/VBreadcrumbs/VBreadcrumbs.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbs\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VBreadcrumbsItem */ \"./src/components/VBreadcrumbs/VBreadcrumbsItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsItem\", function() { return _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n\n\nvar VBreadcrumbsDivider = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createSimpleFunctional\"])('v-breadcrumbs__divider', 'li');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VBreadcrumbs: _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VBreadcrumbsItem: _VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VBreadcrumbsDivider: VBreadcrumbsDivider\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VBtn/VBtn.ts\":\n/*!*************************************!*\\\n !*** ./src/components/VBtn/VBtn.ts ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_buttons_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_buttons.styl */ \"./src/stylus/components/_buttons.styl\");\n/* harmony import */ var _stylus_components_buttons_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_buttons_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VProgressCircular */ \"./src/components/VProgressCircular/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n\n// Components\n\n// Mixins\n\n\n\n\n\n\n// Utilities\n\nvar baseMixins = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_positionable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_4__[\"factory\"])('btnToggle'), Object(_mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__[\"factory\"])('inputValue')\n/* @vue/component */\n);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseMixins.extend().extend({\n name: 'v-btn',\n props: {\n activeClass: {\n type: String,\n default: 'v-btn--active'\n },\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n flat: Boolean,\n icon: Boolean,\n large: Boolean,\n loading: Boolean,\n outline: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null\n },\n round: Boolean,\n small: Boolean,\n tag: {\n type: String,\n default: 'button'\n },\n type: {\n type: String,\n default: 'button'\n },\n value: null\n },\n computed: {\n classes: function classes() {\n var _a;\n return __assign((_a = { 'v-btn': true }, _a[this.activeClass] = this.isActive, _a['v-btn--absolute'] = this.absolute, _a['v-btn--block'] = this.block, _a['v-btn--bottom'] = this.bottom, _a['v-btn--disabled'] = this.disabled, _a['v-btn--flat'] = this.flat, _a['v-btn--floating'] = this.fab, _a['v-btn--fixed'] = this.fixed, _a['v-btn--icon'] = this.icon, _a['v-btn--large'] = this.large, _a['v-btn--left'] = this.left, _a['v-btn--loader'] = this.loading, _a['v-btn--outline'] = this.outline, _a['v-btn--depressed'] = this.depressed && !this.flat || this.outline, _a['v-btn--right'] = this.right, _a['v-btn--round'] = this.round, _a['v-btn--router'] = this.to, _a['v-btn--small'] = this.small, _a['v-btn--top'] = this.top, _a), this.themeClasses);\n },\n computedRipple: function computedRipple() {\n var defaultRipple = this.icon || this.fab ? { circle: true } : true;\n if (this.disabled) return false;else return this.ripple !== null ? this.ripple : defaultRipple;\n }\n },\n watch: {\n '$route': 'onRouteChange'\n },\n methods: {\n // Prevent focus to match md spec\n click: function click(e) {\n !this.fab && e.detail && this.$el.blur();\n this.$emit('click', e);\n this.btnToggle && this.toggle();\n },\n genContent: function genContent() {\n return this.$createElement('div', { 'class': 'v-btn__content' }, this.$slots.default);\n },\n genLoader: function genLoader() {\n return this.$createElement('span', {\n class: 'v-btn__loading'\n }, this.$slots.loader || [this.$createElement(_VProgressCircular__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n indeterminate: true,\n size: 23,\n width: 2\n }\n })]);\n },\n onRouteChange: function onRouteChange() {\n var _this = this;\n if (!this.to || !this.$refs.link) return;\n var path = \"_vnode.data.class.\" + this.activeClass;\n this.$nextTick(function () {\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getObjectValueByPath\"])(_this.$refs.link, path)) {\n _this.toggle();\n }\n });\n }\n },\n render: function render(h) {\n var setColor = !this.outline && !this.flat && !this.disabled ? this.setBackgroundColor : this.setTextColor;\n var _a = this.generateRouteLink(this.classes),\n tag = _a.tag,\n data = _a.data;\n var children = [this.genContent(), this.loading && this.genLoader()];\n if (tag === 'button') data.attrs.type = this.type;\n data.attrs.value = ['string', 'number'].includes(_typeof(this.value)) ? this.value : JSON.stringify(this.value);\n if (this.btnToggle) {\n data.ref = 'link';\n }\n return h(tag, setColor(this.color, data), children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBtn/index.ts\":\n/*!**************************************!*\\\n !*** ./src/components/VBtn/index.ts ***!\n \\**************************************/\n/*! exports provided: VBtn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtn */ \"./src/components/VBtn/VBtn.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtn\", function() { return _VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VBtnToggle/VBtnToggle.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VBtnToggle/VBtnToggle.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_button_toggle_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_button-toggle.styl */ \"./src/stylus/components/_button-toggle.styl\");\n/* harmony import */ var _stylus_components_button_toggle_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_button_toggle_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_button_group__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-btn-toggle',\n props: {\n activeClass: {\n type: String,\n default: 'v-btn--active'\n }\n },\n computed: {\n classes: function classes() {\n return __assign({}, _mixins_button_group__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this), { 'v-btn-toggle': true, 'v-btn-toggle--only-child': this.selectedItems.length === 1, 'v-btn-toggle--selected': this.selectedItems.length > 0 });\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VBtnToggle/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VBtnToggle/index.ts ***!\n \\********************************************/\n/*! exports provided: VBtnToggle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtnToggle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VBtnToggle */ \"./src/components/VBtnToggle/VBtnToggle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtnToggle\", function() { return _VBtnToggle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VBtnToggle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendar.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VCalendar/VCalendar.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_calendar_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VCalendarMonthly */ \"./src/components/VCalendar/VCalendarMonthly.ts\");\n/* harmony import */ var _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VCalendarDaily */ \"./src/components/VCalendar/VCalendarDaily.ts\");\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n// Styles\n// import '../../stylus/components/_calendar-daily.styl'\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Mixins\n\n// Util\n\n\n// Calendars\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'v-calendar',\n props: __assign({}, _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].calendar, _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].weeks, _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].intervals),\n data: function data() {\n return {\n lastStart: null,\n lastEnd: null\n };\n },\n computed: {\n parsedValue: function parsedValue() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.value) || this.parsedStart || this.times.today;\n },\n renderProps: function renderProps() {\n var around = this.parsedValue;\n var component = 'div';\n var maxDays = this.maxDays;\n var start = around;\n var end = around;\n switch (this.type) {\n case 'month':\n component = _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n start = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getStartOfMonth\"])(around);\n end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getEndOfMonth\"])(around);\n break;\n case 'week':\n component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n start = this.getStartOfWeek(around);\n end = this.getEndOfWeek(around);\n maxDays = 7;\n break;\n case 'day':\n component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n maxDays = 1;\n break;\n case '4day':\n component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n end = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(end), _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"nextDay\"], 4);\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateFormatted\"])(end);\n maxDays = 4;\n break;\n case 'custom-weekly':\n component = _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n start = this.parsedStart || around;\n end = this.parsedEnd;\n break;\n case 'custom-daily':\n component = _VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n start = this.parsedStart || around;\n end = this.parsedEnd;\n break;\n }\n return { component: component, start: start, end: end, maxDays: maxDays };\n }\n },\n watch: {\n renderProps: 'checkChange'\n },\n methods: {\n checkChange: function checkChange() {\n var _a = this.renderProps,\n start = _a.start,\n end = _a.end;\n if (start !== this.lastStart || end !== this.lastEnd) {\n this.lastStart = start;\n this.lastEnd = end;\n this.$emit('change', { start: start, end: end });\n }\n },\n move: function move(amount) {\n if (amount === void 0) {\n amount = 1;\n }\n var moved = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(this.parsedValue);\n var forward = amount > 0;\n var mover = forward ? _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"nextDay\"] : _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"prevDay\"];\n var limit = forward ? _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAYS_IN_MONTH_MAX\"] : _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAY_MIN\"];\n var times = forward ? amount : -amount;\n while (--times >= 0) {\n switch (this.type) {\n case 'month':\n moved.day = limit;\n mover(moved);\n break;\n case 'week':\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, _util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"DAYS_IN_WEEK\"]);\n break;\n case 'day':\n mover(moved);\n break;\n case '4day':\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"relativeDays\"])(moved, mover, 4);\n break;\n }\n }\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateWeekday\"])(moved);\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateFormatted\"])(moved);\n Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateRelative\"])(moved, this.times.now);\n this.$emit('input', moved.date);\n this.$emit('moved', moved);\n },\n next: function next(amount) {\n if (amount === void 0) {\n amount = 1;\n }\n this.move(amount);\n },\n prev: function prev(amount) {\n if (amount === void 0) {\n amount = 1;\n }\n this.move(-amount);\n },\n timeToY: function timeToY(time, clamp) {\n if (clamp === void 0) {\n clamp = true;\n }\n var c = this.$children[0];\n if (c && c.timeToY) {\n return c.timeToY(time, clamp);\n } else {\n return false;\n }\n },\n minutesToPixels: function minutesToPixels(minutes) {\n var c = this.$children[0];\n if (c && c.minutesToPixels) {\n return c.minutesToPixels(minutes);\n } else {\n return -1;\n }\n },\n scrollToTime: function scrollToTime(time) {\n var c = this.$children[0];\n if (c && c.scrollToTime) {\n return c.scrollToTime(time);\n } else {\n return false;\n }\n }\n },\n render: function render(h) {\n var _this = this;\n var _a = this.renderProps,\n start = _a.start,\n end = _a.end,\n maxDays = _a.maxDays,\n component = _a.component;\n return h(component, {\n staticClass: 'v-calendar',\n props: __assign({}, this.$props, { start: start.date, end: end.date, maxDays: maxDays }),\n on: __assign({}, this.$listeners, { 'click:date': function clickDate(day) {\n if (_this.$listeners['input']) {\n _this.$emit('input', day.date);\n }\n if (_this.$listeners['click:date']) {\n _this.$emit('click:date', day);\n }\n } }),\n scopedSlots: this.$scopedSlots\n });\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarDaily.ts\":\n/*!****************************************************!*\\\n !*** ./src/components/VCalendar/VCalendarDaily.ts ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_calendar_daily_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_calendar-daily.styl */ \"./src/stylus/components/_calendar-daily.styl\");\n/* harmony import */ var _stylus_components_calendar_daily_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_calendar_daily_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\n/* harmony import */ var _mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mixins/calendar-with-intervals */ \"./src/components/VCalendar/mixins/calendar-with-intervals.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n// Styles\n\n// Directives\n\n// Mixins\n\n// Util\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n name: 'v-calendar-daily',\n directives: { Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_1__[\"default\"] },\n data: function data() {\n return {\n scrollPush: 0\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-calendar-daily': true }, this.themeClasses);\n }\n },\n mounted: function mounted() {\n this.init();\n },\n methods: {\n init: function init() {\n this.$nextTick(this.onResize);\n },\n onResize: function onResize() {\n this.scrollPush = this.getScrollPush();\n },\n getScrollPush: function getScrollPush() {\n var area = this.$refs.scrollArea;\n var pane = this.$refs.pane;\n return area && pane ? area.offsetWidth - pane.offsetWidth : 0;\n },\n genHead: function genHead() {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__head',\n style: {\n marginRight: this.scrollPush + 'px'\n }\n }, __spread([this.genHeadIntervals()], this.genHeadDays()));\n },\n genHeadIntervals: function genHeadIntervals() {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__intervals-head'\n });\n },\n genHeadDays: function genHeadDays() {\n return this.days.map(this.genHeadDay);\n },\n genHeadDay: function genHeadDay(day) {\n var _this = this;\n var slot = this.$scopedSlots.dayHeader;\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily_head-day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':day', function (_e) {\n return _this.getSlotScope(day);\n })\n }, [this.genHeadWeekday(day), this.genHeadDayLabel(day), slot ? slot(day) : '']);\n },\n genHeadWeekday: function genHeadWeekday(day) {\n var color = day.present ? this.color : undefined;\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-daily_head-weekday'\n }), this.weekdayFormatter(day, this.shortWeekdays));\n },\n genHeadDayLabel: function genHeadDayLabel(day) {\n var color = day.present ? this.color : undefined;\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-daily_head-day-label',\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false }\n }, function (_e) {\n return day;\n })\n }), this.dayFormatter(day, false));\n },\n genBody: function genBody() {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__body'\n }, [this.genScrollArea()]);\n },\n genScrollArea: function genScrollArea() {\n return this.$createElement('div', {\n ref: 'scrollArea',\n staticClass: 'v-calendar-daily__scroll-area'\n }, [this.genPane()]);\n },\n genPane: function genPane() {\n return this.$createElement('div', {\n ref: 'pane',\n staticClass: 'v-calendar-daily__pane',\n style: {\n height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.bodyHeight)\n }\n }, [this.genDayContainer()]);\n },\n genDayContainer: function genDayContainer() {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__day-container'\n }, __spread([this.genBodyIntervals()], this.genDays()));\n },\n genDays: function genDays() {\n return this.days.map(this.genDay);\n },\n genDay: function genDay(day, index) {\n var _this = this;\n var slot = this.$scopedSlots.dayBody;\n var scope = this.getSlotScope(day);\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', function (e) {\n return _this.getSlotScope(_this.getTimestampAtEvent(e, day));\n })\n }, __spread(this.genDayIntervals(index), [slot ? slot(scope) : '']));\n },\n genDayIntervals: function genDayIntervals(index) {\n return this.intervals[index].map(this.genDayInterval);\n },\n genDayInterval: function genDayInterval(interval) {\n var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.intervalHeight);\n var styler = this.intervalStyle || this.intervalStyleDefault;\n var slot = this.$scopedSlots.interval;\n var scope = this.getSlotScope(interval);\n var data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: __assign({ height: height }, styler(interval))\n };\n var children = slot ? slot(scope) : undefined;\n return this.$createElement('div', data, children);\n },\n genBodyIntervals: function genBodyIntervals() {\n var _this = this;\n var data = {\n staticClass: 'v-calendar-daily__intervals-body',\n on: this.getDefaultMouseEventHandlers(':interval', function (e) {\n return _this.getTimestampAtEvent(e, _this.parsedStart);\n })\n };\n return this.$createElement('div', data, this.genIntervalLabels());\n },\n genIntervalLabels: function genIntervalLabels() {\n return this.intervals[0].map(this.genIntervalLabel);\n },\n genIntervalLabel: function genIntervalLabel(interval) {\n var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(this.intervalHeight);\n var short = this.shortIntervals;\n var shower = this.showIntervalLabel || this.showIntervalLabelDefault;\n var show = shower(interval);\n var label = show ? this.intervalFormatter(interval, short) : undefined;\n return this.$createElement('div', {\n key: interval.time,\n staticClass: 'v-calendar-daily__interval',\n style: {\n height: height\n }\n }, [this.$createElement('div', {\n staticClass: 'v-calendar-daily__interval-text'\n }, label)]);\n }\n },\n render: function render(h) {\n return h('div', {\n class: this.classes,\n nativeOn: {\n dragstart: function dragstart(e) {\n e.preventDefault();\n }\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize\n }]\n }, [!this.hideHeader ? this.genHead() : '', this.genBody()]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarMonthly.ts\":\n/*!******************************************************!*\\\n !*** ./src/components/VCalendar/VCalendarMonthly.ts ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_calendar-weekly.styl */ \"./src/stylus/components/_calendar-weekly.styl\");\n/* harmony import */ var _stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Styles\n\n// Mixins\n\n// Util\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-calendar-monthly',\n computed: {\n staticClass: function staticClass() {\n return 'v-calendar-monthly v-calendar-weekly';\n },\n parsedStart: function parsedStart() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getStartOfMonth\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.start));\n },\n parsedEnd: function parsedEnd() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"getEndOfMonth\"])(Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTimestamp\"])(this.end));\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/VCalendarWeekly.ts\":\n/*!*****************************************************!*\\\n !*** ./src/components/VCalendar/VCalendarWeekly.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_calendar-weekly.styl */ \"./src/stylus/components/_calendar-weekly.styl\");\n/* harmony import */ var _stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_calendar_weekly_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_calendar_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mixins/calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n// Styles\n\n// Mixins\n\n// Util\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-calendar-weekly',\n props: _util_props__WEBPACK_IMPORTED_MODULE_2__[\"default\"].weeks,\n computed: {\n staticClass: function staticClass() {\n return 'v-calendar-weekly';\n },\n classes: function classes() {\n return this.themeClasses;\n },\n parsedMinWeeks: function parsedMinWeeks() {\n return parseInt(this.minWeeks);\n },\n days: function days() {\n var minDays = this.parsedMinWeeks * this.weekdays.length;\n var start = this.getStartOfWeek(this.parsedStart);\n var end = this.getEndOfWeek(this.parsedEnd);\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"createDayList\"])(start, end, this.times.today, this.weekdaySkips, Number.MAX_SAFE_INTEGER, minDays);\n },\n todayWeek: function todayWeek() {\n var today = this.times.today;\n var start = this.getStartOfWeek(today);\n var end = this.getEndOfWeek(today);\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"createDayList\"])(start, end, today, this.weekdaySkips, this.weekdays.length, this.weekdays.length);\n },\n monthFormatter: function monthFormatter() {\n if (this.monthFormat) {\n return this.monthFormat;\n }\n var longOptions = { timeZone: 'UTC', month: 'long' };\n var shortOptions = { timeZone: 'UTC', month: 'short' };\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"createNativeLocaleFormatter\"])(this.locale, function (_tms, short) {\n return short ? shortOptions : longOptions;\n });\n }\n },\n methods: {\n isOutside: function isOutside(day) {\n var dayIdentifier = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"getDayIdentifier\"])(day);\n return dayIdentifier < Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"getDayIdentifier\"])(this.parsedStart) || dayIdentifier > Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_3__[\"getDayIdentifier\"])(this.parsedEnd);\n },\n genHead: function genHead() {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head'\n }, this.genHeadDays());\n },\n genHeadDays: function genHeadDays() {\n return this.todayWeek.map(this.genHeadDay);\n },\n genHeadDay: function genHeadDay(day, index) {\n var outside = this.isOutside(this.days[index]);\n var color = day.present ? this.color : undefined;\n return this.$createElement('div', this.setTextColor(color, {\n key: day.date,\n staticClass: 'v-calendar-weekly__head-weekday',\n class: this.getRelativeClasses(day, outside)\n }), this.weekdayFormatter(day, this.shortWeekdays));\n },\n genWeeks: function genWeeks() {\n var days = this.days;\n var weekDays = this.weekdays.length;\n var weeks = [];\n for (var i = 0; i < days.length; i += weekDays) {\n weeks.push(this.genWeek(days.slice(i, i + weekDays)));\n }\n return weeks;\n },\n genWeek: function genWeek(week) {\n return this.$createElement('div', {\n key: week[0].date,\n staticClass: 'v-calendar-weekly__week'\n }, week.map(this.genDay));\n },\n genDay: function genDay(day) {\n var outside = this.isOutside(day);\n var slot = this.$scopedSlots.day;\n var slotData = __assign({ outside: outside }, day);\n var hasMonth = day.day === 1 && this.showMonthOnFirst;\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-weekly__day',\n class: this.getRelativeClasses(day, outside),\n on: this.getDefaultMouseEventHandlers(':day', function (_e) {\n return day;\n })\n }, [this.genDayLabel(day), hasMonth ? this.genDayMonth(day) : '', slot ? slot(slotData) : '']);\n },\n genDayLabel: function genDayLabel(day) {\n var color = day.present ? this.color : undefined;\n var slot = this.$scopedSlots.dayLabel;\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-label',\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false }\n }, function (_e) {\n return day;\n })\n }), slot ? slot(day) : this.dayFormatter(day, false));\n },\n genDayMonth: function genDayMonth(day) {\n var color = day.present ? this.color : undefined;\n var slot = this.$scopedSlots.dayMonth;\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-month'\n }), slot ? slot(day) : this.monthFormatter(day, this.shortMonths));\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: this.staticClass,\n class: this.classes,\n nativeOn: {\n dragstart: function dragstart(e) {\n e.preventDefault();\n }\n }\n }, __spread([!this.hideHeader ? this.genHead() : ''], this.genWeeks()));\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VCalendar/index.ts ***!\n \\*******************************************/\n/*! exports provided: VCalendar, VCalendarDaily, VCalendarWeekly, VCalendarMonthly, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCalendar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCalendar */ \"./src/components/VCalendar/VCalendar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendar\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCalendarDaily */ \"./src/components/VCalendar/VCalendarDaily.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarDaily\", function() { return _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VCalendarWeekly */ \"./src/components/VCalendar/VCalendarWeekly.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarWeekly\", function() { return _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VCalendarMonthly */ \"./src/components/VCalendar/VCalendarMonthly.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarMonthly\", function() { return _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VCalendar: _VCalendar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VCalendarDaily: _VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VCalendarWeekly: _VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VCalendarMonthly: _VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-base.ts\":\n/*!**********************************************************!*\\\n !*** ./src/components/VCalendar/mixins/calendar-base.ts ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _times__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./times */ \"./src/components/VCalendar/mixins/times.ts\");\n/* harmony import */ var _mouse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mouse */ \"./src/components/VCalendar/mixins/mouse.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Mixins\n\n\n\n\n\n// Util\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _times__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mouse__WEBPACK_IMPORTED_MODULE_4__[\"default\"]).extend({\n name: 'calendar-base',\n props: _util_props__WEBPACK_IMPORTED_MODULE_5__[\"default\"].base,\n computed: {\n weekdaySkips: function weekdaySkips() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getWeekdaySkips\"])(this.weekdays);\n },\n parsedStart: function parsedStart() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"parseTimestamp\"])(this.start);\n },\n parsedEnd: function parsedEnd() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"parseTimestamp\"])(this.end);\n },\n days: function days() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createDayList\"])(this.parsedStart, this.parsedEnd, this.times.today, this.weekdaySkips);\n },\n dayFormatter: function dayFormatter() {\n if (this.dayFormat) {\n return this.dayFormat;\n }\n var options = { timeZone: 'UTC', day: 'numeric' };\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.locale, function (_tms, _short) {\n return options;\n });\n },\n weekdayFormatter: function weekdayFormatter() {\n if (this.weekdayFormat) {\n return this.weekdayFormat;\n }\n var longOptions = { timeZone: 'UTC', weekday: 'long' };\n var shortOptions = { timeZone: 'UTC', weekday: 'short' };\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.locale, function (_tms, short) {\n return short ? shortOptions : longOptions;\n });\n }\n },\n methods: {\n getRelativeClasses: function getRelativeClasses(timestamp, outside) {\n if (outside === void 0) {\n outside = false;\n }\n return {\n 'v-present': timestamp.present,\n 'v-past': timestamp.past,\n 'v-future': timestamp.future,\n 'v-outside': outside\n };\n },\n getStartOfWeek: function getStartOfWeek(timestamp) {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getStartOfWeek\"])(timestamp, this.weekdays, this.times.today);\n },\n getEndOfWeek: function getEndOfWeek(timestamp) {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_6__[\"getEndOfWeek\"])(timestamp, this.weekdays, this.times.today);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/calendar-with-intervals.ts\":\n/*!********************************************************************!*\\\n !*** ./src/components/VCalendar/mixins/calendar-with-intervals.ts ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calendar_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calendar-base */ \"./src/components/VCalendar/mixins/calendar-base.ts\");\n/* harmony import */ var _util_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/props */ \"./src/components/VCalendar/util/props.ts\");\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n// Mixins\n\n// Util\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_calendar_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'calendar-with-intervals',\n props: _util_props__WEBPACK_IMPORTED_MODULE_1__[\"default\"].intervals,\n computed: {\n parsedFirstInterval: function parsedFirstInterval() {\n return parseInt(this.firstInterval);\n },\n parsedIntervalMinutes: function parsedIntervalMinutes() {\n return parseInt(this.intervalMinutes);\n },\n parsedIntervalCount: function parsedIntervalCount() {\n return parseInt(this.intervalCount);\n },\n parsedIntervalHeight: function parsedIntervalHeight() {\n return parseFloat(this.intervalHeight);\n },\n firstMinute: function firstMinute() {\n return this.parsedFirstInterval * this.parsedIntervalMinutes;\n },\n bodyHeight: function bodyHeight() {\n return this.parsedIntervalCount * this.parsedIntervalHeight;\n },\n days: function days() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createDayList\"])(this.parsedStart, this.parsedEnd, this.times.today, this.weekdaySkips, this.maxDays);\n },\n intervals: function intervals() {\n var days = this.days;\n var first = this.parsedFirstInterval;\n var minutes = this.parsedIntervalMinutes;\n var count = this.parsedIntervalCount;\n var now = this.times.now;\n return days.map(function (d) {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createIntervalList\"])(d, first, minutes, count, now);\n });\n },\n intervalFormatter: function intervalFormatter() {\n if (this.intervalFormat) {\n return this.intervalFormat;\n }\n var longOptions = { timeZone: 'UTC', hour12: true, hour: '2-digit', minute: '2-digit' };\n var shortOptions = { timeZone: 'UTC', hour12: true, hour: 'numeric', minute: '2-digit' };\n var shortHourOptions = { timeZone: 'UTC', hour12: true, hour: 'numeric' };\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"createNativeLocaleFormatter\"])(this.locale, function (tms, short) {\n return short ? tms.minute === 0 ? shortHourOptions : shortOptions : longOptions;\n });\n }\n },\n methods: {\n showIntervalLabelDefault: function showIntervalLabelDefault(interval) {\n var first = this.intervals[0][0];\n var isFirst = first.hour === interval.hour && first.minute === interval.minute;\n return !isFirst && interval.minute === 0;\n },\n intervalStyleDefault: function intervalStyleDefault(_interval) {\n return undefined;\n },\n getTimestampAtEvent: function getTimestampAtEvent(e, day) {\n var timestamp = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(day);\n var bounds = e.currentTarget.getBoundingClientRect();\n var baseMinutes = this.firstMinute;\n var touchEvent = e;\n var mouseEvent = e;\n var touches = touchEvent.changedTouches || touchEvent.touches;\n var clientY = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY;\n var addIntervals = (clientY - bounds.top) / this.parsedIntervalHeight;\n var addMinutes = Math.floor(addIntervals * this.parsedIntervalMinutes);\n var minutes = baseMinutes + addMinutes;\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"updateMinutes\"])(timestamp, minutes, this.times.now);\n },\n getSlotScope: function getSlotScope(timestamp) {\n var scope = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"copyTimestamp\"])(timestamp);\n scope.timeToY = this.timeToY;\n scope.minutesToPixels = this.minutesToPixels;\n return scope;\n },\n scrollToTime: function scrollToTime(time) {\n var y = this.timeToY(time);\n var pane = this.$refs.scrollArea;\n if (y === false || !pane) {\n return false;\n }\n pane.scrollTop = y;\n return true;\n },\n minutesToPixels: function minutesToPixels(minutes) {\n return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight;\n },\n timeToY: function timeToY(time, clamp) {\n if (clamp === void 0) {\n clamp = true;\n }\n var minutes = Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_2__[\"parseTime\"])(time);\n if (minutes === false) {\n return false;\n }\n var min = this.firstMinute;\n var gap = this.parsedIntervalCount * this.parsedIntervalMinutes;\n var delta = (minutes - min) / gap;\n var y = delta * this.bodyHeight;\n if (clamp) {\n if (y < 0) {\n y = 0;\n }\n if (y > this.bodyHeight) {\n y = this.bodyHeight;\n }\n }\n return y;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/mouse.ts\":\n/*!**************************************************!*\\\n !*** ./src/components/VCalendar/mixins/mouse.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'mouse',\n methods: {\n getDefaultMouseEventHandlers: function getDefaultMouseEventHandlers(suffix, getEvent) {\n var _a;\n return this.getMouseEventHandlers((_a = {}, _a['click' + suffix] = { event: 'click' }, _a['contextmenu' + suffix] = { event: 'contextmenu', prevent: true, result: false }, _a['mousedown' + suffix] = { event: 'mousedown' }, _a['mousemove' + suffix] = { event: 'mousemove' }, _a['mouseup' + suffix] = { event: 'mouseup' }, _a['mouseenter' + suffix] = { event: 'mouseenter' }, _a['mouseleave' + suffix] = { event: 'mouseleave' }, _a['touchstart' + suffix] = { event: 'touchstart' }, _a['touchmove' + suffix] = { event: 'touchmove' }, _a['touchend' + suffix] = { event: 'touchend' }, _a), getEvent);\n },\n getMouseEventHandlers: function getMouseEventHandlers(events, getEvent) {\n var _this = this;\n var on = {};\n var _loop_1 = function _loop_1(event) {\n var eventOptions = events[event];\n if (!this_1.$listeners[event]) return \"continue\";\n // TODO somehow pull in modifiers\n var prefix = eventOptions.passive ? '&' : (eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : '');\n var key = prefix + eventOptions.event;\n var handler = function handler(e) {\n var mouseEvent = e;\n if (eventOptions.button === undefined || mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button) {\n if (eventOptions.prevent) {\n e.preventDefault();\n }\n if (eventOptions.stop) {\n e.stopPropagation();\n }\n _this.$emit(event, getEvent(e));\n }\n return eventOptions.result;\n };\n if (key in on) {\n if (Array.isArray(on[key])) {\n on[key].push(handler);\n } else {\n on[key] = [on[key], handler];\n }\n } else {\n on[key] = handler;\n }\n };\n var this_1 = this;\n for (var event in events) {\n _loop_1(event);\n }\n return on;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/mixins/times.ts\":\n/*!**************************************************!*\\\n !*** ./src/components/VCalendar/mixins/times.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_timestamp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'times',\n props: {\n now: {\n type: String,\n validator: _util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"validateTimestamp\"]\n }\n },\n data: function data() {\n return {\n times: {\n now: Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])('0000-00-00 00:00'),\n today: Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])('0000-00-00')\n }\n };\n },\n computed: {\n parsedNow: function parsedNow() {\n return this.now ? Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseTimestamp\"])(this.now) : null;\n }\n },\n watch: {\n parsedNow: 'updateTimes'\n },\n created: function created() {\n this.updateTimes();\n this.setPresent();\n },\n methods: {\n setPresent: function setPresent() {\n this.times.now.present = this.times.today.present = true;\n this.times.now.past = this.times.today.past = false;\n this.times.now.future = this.times.today.future = false;\n },\n updateTimes: function updateTimes() {\n var now = this.parsedNow || this.getNow();\n this.updateDay(now, this.times.now);\n this.updateTime(now, this.times.now);\n this.updateDay(now, this.times.today);\n },\n getNow: function getNow() {\n return Object(_util_timestamp__WEBPACK_IMPORTED_MODULE_1__[\"parseDate\"])(new Date());\n },\n updateDay: function updateDay(now, target) {\n if (now.date !== target.date) {\n target.year = now.year;\n target.month = now.month;\n target.day = now.day;\n target.weekday = now.weekday;\n target.date = now.date;\n }\n },\n updateTime: function updateTime(now, target) {\n if (now.time !== target.time) {\n target.hour = now.hour;\n target.minute = now.minute;\n target.time = now.time;\n }\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/props.ts\":\n/*!************************************************!*\\\n !*** ./src/components/VCalendar/util/props.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timestamp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n base: {\n start: {\n type: String,\n validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"],\n default: function _default() {\n return Object(_timestamp__WEBPACK_IMPORTED_MODULE_0__[\"parseDate\"])(new Date()).date;\n }\n },\n end: {\n type: String,\n validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"],\n default: '0000-00-00'\n },\n weekdays: {\n type: Array,\n default: function _default() {\n return [0, 1, 2, 3, 4, 5, 6];\n }\n },\n hideHeader: {\n type: Boolean,\n default: false\n },\n shortWeekdays: {\n type: Boolean,\n default: true\n },\n weekdayFormat: {\n type: Function,\n default: null\n },\n dayFormat: {\n type: Function,\n default: null\n },\n locale: {\n type: String,\n default: 'en-us'\n }\n },\n intervals: {\n maxDays: {\n type: Number,\n default: 7\n },\n shortIntervals: {\n type: Boolean,\n default: true\n },\n intervalHeight: {\n type: [Number, String],\n default: 40,\n validate: validateNumber\n },\n intervalMinutes: {\n type: [Number, String],\n default: 60,\n validate: validateNumber\n },\n firstInterval: {\n type: [Number, String],\n default: 0,\n validate: validateNumber\n },\n intervalCount: {\n type: [Number, String],\n default: 24,\n validate: validateNumber\n },\n intervalFormat: {\n type: Function,\n default: null\n },\n intervalStyle: {\n type: Function,\n default: null\n },\n showIntervalLabel: {\n type: Function,\n default: null\n }\n },\n weeks: {\n minWeeks: {\n validate: validateNumber,\n default: 1\n },\n shortMonths: {\n type: Boolean,\n default: true\n },\n showMonthOnFirst: {\n type: Boolean,\n default: true\n },\n monthFormat: {\n type: Function,\n default: null\n }\n },\n calendar: {\n type: {\n type: String,\n default: 'month'\n },\n value: {\n type: String,\n validate: _timestamp__WEBPACK_IMPORTED_MODULE_0__[\"validateTimestamp\"]\n }\n }\n});\nfunction validateNumber(input) {\n return isFinite(parseInt(input));\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCalendar/util/timestamp.ts\":\n/*!****************************************************!*\\\n !*** ./src/components/VCalendar/util/timestamp.ts ***!\n \\****************************************************/\n/*! exports provided: PARSE_REGEX, PARSE_TIME, DAYS_IN_MONTH, DAYS_IN_MONTH_LEAP, DAYS_IN_MONTH_MIN, DAYS_IN_MONTH_MAX, MONTH_MAX, MONTH_MIN, DAY_MIN, DAYS_IN_WEEK, MINUTES_IN_HOUR, HOURS_IN_DAY, FIRST_HOUR, getStartOfWeek, getEndOfWeek, getStartOfMonth, getEndOfMonth, parseTime, validateTimestamp, parseTimestamp, parseDate, getDayIdentifier, getTimeIdentifier, updateRelative, updateMinutes, updateWeekday, updateFormatted, getWeekday, isLeapYear, daysInMonth, copyTimestamp, padNumber, getDate, getTime, nextMinutes, nextDay, prevDay, relativeDays, findWeekday, getWeekdaySkips, createDayList, createIntervalList, createNativeLocaleFormatter */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PARSE_REGEX\", function() { return PARSE_REGEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PARSE_TIME\", function() { return PARSE_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH\", function() { return DAYS_IN_MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_LEAP\", function() { return DAYS_IN_MONTH_LEAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_MIN\", function() { return DAYS_IN_MONTH_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_MONTH_MAX\", function() { return DAYS_IN_MONTH_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH_MAX\", function() { return MONTH_MAX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH_MIN\", function() { return MONTH_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAY_MIN\", function() { return DAY_MIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS_IN_WEEK\", function() { return DAYS_IN_WEEK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTES_IN_HOUR\", function() { return MINUTES_IN_HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOURS_IN_DAY\", function() { return HOURS_IN_DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FIRST_HOUR\", function() { return FIRST_HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartOfWeek\", function() { return getStartOfWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEndOfWeek\", function() { return getEndOfWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartOfMonth\", function() { return getStartOfMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEndOfMonth\", function() { return getEndOfMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTime\", function() { return parseTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateTimestamp\", function() { return validateTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTimestamp\", function() { return parseTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDate\", function() { return parseDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDayIdentifier\", function() { return getDayIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeIdentifier\", function() { return getTimeIdentifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRelative\", function() { return updateRelative; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateMinutes\", function() { return updateMinutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateWeekday\", function() { return updateWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateFormatted\", function() { return updateFormatted; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWeekday\", function() { return getWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLeapYear\", function() { return isLeapYear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"daysInMonth\", function() { return daysInMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copyTimestamp\", function() { return copyTimestamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"padNumber\", function() { return padNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDate\", function() { return getDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTime\", function() { return getTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextMinutes\", function() { return nextMinutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextDay\", function() { return nextDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prevDay\", function() { return prevDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relativeDays\", function() { return relativeDays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findWeekday\", function() { return findWeekday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getWeekdaySkips\", function() { return getWeekdaySkips; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDayList\", function() { return createDayList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createIntervalList\", function() { return createIntervalList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNativeLocaleFormatter\", function() { return createNativeLocaleFormatter; });\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/;\nvar PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/;\nvar DAYS_IN_MONTH = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_MIN = 28;\nvar DAYS_IN_MONTH_MAX = 31;\nvar MONTH_MAX = 12;\nvar MONTH_MIN = 1;\nvar DAY_MIN = 1;\nvar DAYS_IN_WEEK = 7;\nvar MINUTES_IN_HOUR = 60;\nvar HOURS_IN_DAY = 24;\nvar FIRST_HOUR = 0;\nfunction getStartOfWeek(timestamp, weekdays, today) {\n var start = copyTimestamp(timestamp);\n findWeekday(start, weekdays[0], prevDay);\n updateFormatted(start);\n if (today) {\n updateRelative(start, today, start.hasTime);\n }\n return start;\n}\nfunction getEndOfWeek(timestamp, weekdays, today) {\n var end = copyTimestamp(timestamp);\n findWeekday(end, weekdays[weekdays.length - 1]);\n updateFormatted(end);\n if (today) {\n updateRelative(end, today, end.hasTime);\n }\n return end;\n}\nfunction getStartOfMonth(timestamp) {\n var start = copyTimestamp(timestamp);\n start.day = DAY_MIN;\n updateWeekday(start);\n updateFormatted(start);\n return start;\n}\nfunction getEndOfMonth(timestamp) {\n var end = copyTimestamp(timestamp);\n end.day = daysInMonth(end.year, end.month);\n updateWeekday(end);\n updateFormatted(end);\n return end;\n}\nfunction parseTime(input) {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input;\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n var parts = PARSE_TIME.exec(input);\n if (!parts) {\n return false;\n }\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0);\n } else if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false;\n }\n return input.hour * 60 + input.minute;\n } else {\n // unsupported type\n return false;\n }\n}\nfunction validateTimestamp(input) {\n return !!PARSE_REGEX.exec(input);\n}\nfunction parseTimestamp(input, now) {\n // YYYY-MM-DD hh:mm:ss\n var parts = PARSE_REGEX.exec(input);\n if (!parts) return null;\n var timestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false\n };\n updateWeekday(timestamp);\n updateFormatted(timestamp);\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime);\n }\n return timestamp;\n}\nfunction parseDate(date) {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false\n });\n}\nfunction getDayIdentifier(timestamp) {\n return timestamp.year * 10000 + timestamp.month * 100 + timestamp.day;\n}\nfunction getTimeIdentifier(timestamp) {\n return timestamp.hour * 100 + timestamp.minute;\n}\nfunction updateRelative(timestamp, now, time) {\n if (time === void 0) {\n time = false;\n }\n var a = getDayIdentifier(now);\n var b = getDayIdentifier(timestamp);\n var present = a === b;\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now);\n b = getTimeIdentifier(timestamp);\n present = a === b;\n }\n timestamp.past = b < a;\n timestamp.present = present;\n timestamp.future = b > a;\n return timestamp;\n}\nfunction updateMinutes(timestamp, minutes, now) {\n timestamp.hasTime = true;\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR);\n timestamp.minute = minutes % MINUTES_IN_HOUR;\n timestamp.time = getTime(timestamp);\n if (now) {\n updateRelative(timestamp, now, true);\n }\n return timestamp;\n}\nfunction updateWeekday(timestamp) {\n timestamp.weekday = getWeekday(timestamp);\n return timestamp;\n}\nfunction updateFormatted(timestamp) {\n timestamp.time = getTime(timestamp);\n timestamp.date = getDate(timestamp);\n return timestamp;\n}\nfunction getWeekday(timestamp) {\n if (timestamp.hasDay) {\n var _ = Math.floor;\n var k = timestamp.day;\n var m = (timestamp.month + 9) % MONTH_MAX + 1;\n var C = _(timestamp.year / 100);\n var Y = timestamp.year % 100 - (timestamp.month <= 2 ? 1 : 0);\n return ((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7 + 7) % 7;\n }\n return timestamp.weekday;\n}\nfunction isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction daysInMonth(year, month) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month];\n}\nfunction copyTimestamp(timestamp) {\n var date = timestamp.date,\n time = timestamp.time,\n year = timestamp.year,\n month = timestamp.month,\n day = timestamp.day,\n weekday = timestamp.weekday,\n hour = timestamp.hour,\n minute = timestamp.minute,\n hasDay = timestamp.hasDay,\n hasTime = timestamp.hasTime,\n past = timestamp.past,\n present = timestamp.present,\n future = timestamp.future;\n return { date: date, time: time, year: year, month: month, day: day, weekday: weekday, hour: hour, minute: minute, hasDay: hasDay, hasTime: hasTime, past: past, present: present, future: future };\n}\nfunction padNumber(x, length) {\n var padded = String(x);\n while (padded.length < length) {\n padded = '0' + padded;\n }\n return padded;\n}\nfunction getDate(timestamp) {\n var str = padNumber(timestamp.year, 4) + \"-\" + padNumber(timestamp.month, 2);\n if (timestamp.hasDay) str += \"-\" + padNumber(timestamp.day, 2);\n return str;\n}\nfunction getTime(timestamp) {\n if (!timestamp.hasTime) {\n return '';\n }\n return padNumber(timestamp.hour, 2) + \":\" + padNumber(timestamp.minute, 2);\n}\nfunction nextMinutes(timestamp, minutes) {\n timestamp.minute += minutes;\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR;\n timestamp.hour++;\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp);\n timestamp.hour = FIRST_HOUR;\n }\n }\n return timestamp;\n}\nfunction nextDay(timestamp) {\n timestamp.day++;\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK;\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN;\n timestamp.month++;\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN;\n timestamp.year++;\n }\n }\n return timestamp;\n}\nfunction prevDay(timestamp) {\n timestamp.day--;\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK;\n if (timestamp.day < DAY_MIN) {\n timestamp.month--;\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--;\n timestamp.month = MONTH_MAX;\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month);\n }\n return timestamp;\n}\nfunction relativeDays(timestamp, mover, days) {\n if (mover === void 0) {\n mover = nextDay;\n }\n if (days === void 0) {\n days = 1;\n }\n while (--days >= 0) {\n mover(timestamp);\n }return timestamp;\n}\nfunction findWeekday(timestamp, weekday, mover, maxDays) {\n if (mover === void 0) {\n mover = nextDay;\n }\n if (maxDays === void 0) {\n maxDays = 6;\n }\n while (timestamp.weekday !== weekday && --maxDays >= 0) {\n mover(timestamp);\n }return timestamp;\n}\nfunction getWeekdaySkips(weekdays) {\n var skips = [1, 1, 1, 1, 1, 1, 1];\n var filled = [0, 0, 0, 0, 0, 0, 0];\n for (var i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1;\n }\n for (var k = 0; k < DAYS_IN_WEEK; k++) {\n var skip = 1;\n for (var j = 1; j < DAYS_IN_WEEK; j++) {\n var next = (k + j) % DAYS_IN_WEEK;\n if (filled[next]) {\n break;\n }\n skip++;\n }\n skips[k] = filled[k] * skip;\n }\n return skips;\n}\nfunction createDayList(start, end, now, weekdaySkips, max, min) {\n if (max === void 0) {\n max = 42;\n }\n if (min === void 0) {\n min = 0;\n }\n var stop = getDayIdentifier(end);\n var days = [];\n var current = copyTimestamp(start);\n var currentIdentifier = 0;\n var stopped = currentIdentifier === stop;\n if (stop < getDayIdentifier(start)) {\n return days;\n }\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current);\n stopped = stopped || currentIdentifier === stop;\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current);\n continue;\n }\n var day = copyTimestamp(current);\n updateFormatted(day);\n updateRelative(day, now);\n days.push(day);\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday]);\n }\n return days;\n}\nfunction createIntervalList(timestamp, first, minutes, count, now) {\n var intervals = [];\n for (var i = 0; i < count; i++) {\n var mins = (first + i) * minutes;\n var int = copyTimestamp(timestamp);\n intervals.push(updateMinutes(int, mins, now));\n }\n return intervals;\n}\nfunction createNativeLocaleFormatter(locale, getOptions) {\n var emptyFormatter = function emptyFormatter(_t, _s) {\n return '';\n };\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter;\n }\n return function (timestamp, short) {\n try {\n var intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short));\n var time = padNumber(timestamp.hour, 2) + \":\" + padNumber(timestamp.minute, 2);\n var date = timestamp.date;\n return intlFormatter.format(new Date(date + \"T\" + time + \":00+00:00\"));\n } catch (e) {\n return '';\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./src/components/VCard/VCard.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VCard/VCard.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_cards.styl */ \"./src/stylus/components/_cards.styl\");\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Extensions\n\n// Mixins\n\n// Helpers\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_routable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-card',\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n raised: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-card': true, 'v-card--flat': this.flat, 'v-card--hover': this.hover }, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this));\n },\n styles: function styles() {\n var style = __assign({}, _VSheet__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.styles.call(this));\n if (this.img) {\n style.background = \"url(\\\"\" + this.img + \"\\\") center center / cover no-repeat\";\n }\n return style;\n }\n },\n render: function render(h) {\n var _a = this.generateRouteLink(this.classes),\n tag = _a.tag,\n data = _a.data;\n data.style = this.styles;\n return h(tag, this.setBackgroundColor(this.color, data), this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCard/VCardMedia.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VCard/VCardMedia.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VImg_VImg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VImg/VImg */ \"./src/components/VImg/VImg.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Components\n\n// Utils\n\n/* istanbul ignore next */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VImg_VImg__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'v-card-media',\n mounted: function mounted() {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"deprecate\"])('v-card-media', this.src ? 'v-img' : 'v-responsive', this);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCard/VCardTitle.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VCard/VCardTitle.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n// Types\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'v-card-title',\n functional: true,\n props: {\n primaryTitle: Boolean\n },\n render: function render(h, _a) {\n var data = _a.data,\n props = _a.props,\n children = _a.children;\n data.staticClass = (\"v-card__title \" + (data.staticClass || '')).trim();\n if (props.primaryTitle) data.staticClass += ' v-card__title--primary';\n return h('div', data, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCard/index.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VCard/index.ts ***!\n \\***************************************/\n/*! exports provided: VCard, VCardMedia, VCardTitle, VCardActions, VCardText, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardActions\", function() { return VCardActions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCardText\", function() { return VCardText; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCard */ \"./src/components/VCard/VCard.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCard\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VCardMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VCardMedia */ \"./src/components/VCard/VCardMedia.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardMedia\", function() { return _VCardMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VCardTitle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VCardTitle */ \"./src/components/VCard/VCardTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardTitle\", function() { return _VCardTitle__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\nvar VCardActions = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-card__actions');\nvar VCardText = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-card__text');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VCard: _VCard__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VCardMedia: _VCardMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VCardTitle: _VCardTitle__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VCardActions: VCardActions,\n VCardText: VCardText\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/VCarousel.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VCarousel/VCarousel.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_carousel_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_carousel.styl */ \"./src/stylus/components/_carousel.styl\");\n/* harmony import */ var _stylus_components_carousel_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_carousel_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VWindow/VWindow */ \"./src/components/VWindow/VWindow.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_button_group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/button-group */ \"./src/mixins/button-group.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Styles\n\n// Extensions\n\n// Components\n\n\n// Mixins\n// TODO: Move this into core components v2.0\n\n// Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-carousel',\n props: {\n cycle: {\n type: Boolean,\n default: true\n },\n delimiterIcon: {\n type: String,\n default: '$vuetify.icons.delimiter'\n },\n height: {\n type: [Number, String],\n default: 500\n },\n hideControls: Boolean,\n hideDelimiters: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: function validator(value) {\n return value > 0;\n }\n },\n mandatory: {\n type: Boolean,\n default: true\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$vuetify.icons.prev'\n }\n },\n data: function data() {\n return {\n changedByDelimiters: false,\n internalHeight: this.height,\n slideTimeout: undefined\n };\n },\n computed: {\n isDark: function isDark() {\n return this.dark || !this.light;\n }\n },\n watch: {\n internalValue: function internalValue(val) {\n this.restartTimeout();\n /* @deprecate */\n /* istanbul ignore else */\n if (!this.$listeners['input']) return;\n this.$emit('input', val);\n },\n interval: 'restartTimeout',\n height: function height(val, oldVal) {\n if (val === oldVal || !val) return;\n this.internalHeight = val;\n },\n cycle: function cycle(val) {\n if (val) {\n this.restartTimeout();\n } else {\n clearTimeout(this.slideTimeout);\n this.slideTimeout = undefined;\n }\n }\n },\n mounted: function mounted() {\n /* @deprecate */\n /* istanbul ignore next */\n if (this.$listeners['input']) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('@input', '@change', this);\n }\n this.startTimeout();\n },\n methods: {\n genDelimiters: function genDelimiters() {\n return this.$createElement('div', {\n staticClass: 'v-carousel__controls'\n }, [this.genItems()]);\n },\n genIcon: function genIcon(direction, icon, fn) {\n var _this = this;\n return this.$createElement('div', {\n staticClass: \"v-carousel__\" + direction\n }, [this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n icon: true\n },\n attrs: {\n 'aria-label': this.$vuetify.t(\"$vuetify.carousel.\" + direction)\n },\n on: {\n click: function click() {\n _this.changedByDelimiters = true;\n fn();\n }\n }\n }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n props: { 'size': '46px' }\n }, icon)])]);\n },\n genIcons: function genIcons() {\n var icons = [];\n var prevIcon = this.$vuetify.rtl ? this.nextIcon : this.prevIcon;\n if (prevIcon && typeof prevIcon === 'string') {\n icons.push(this.genIcon('prev', prevIcon, this.prev));\n }\n var nextIcon = this.$vuetify.rtl ? this.prevIcon : this.nextIcon;\n if (nextIcon && typeof nextIcon === 'string') {\n icons.push(this.genIcon('next', nextIcon, this.next));\n }\n return icons;\n },\n genItems: function genItems() {\n var _this = this;\n var length = this.items.length;\n var children = [];\n for (var i = 0; i < length; i++) {\n var child = this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n class: {\n 'v-carousel__controls__item': true\n },\n props: {\n icon: true,\n small: true,\n value: this.getValue(this.items[i], i)\n }\n }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n props: { size: 18 }\n }, this.delimiterIcon)]);\n children.push(child);\n }\n return this.$createElement(_mixins_button_group__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n props: {\n value: this.internalValue\n },\n on: {\n change: function change(val) {\n _this.internalValue = val;\n }\n }\n }, children);\n },\n restartTimeout: function restartTimeout() {\n this.slideTimeout && clearTimeout(this.slideTimeout);\n this.slideTimeout = undefined;\n var raf = requestAnimationFrame || setTimeout;\n raf(this.startTimeout);\n },\n startTimeout: function startTimeout() {\n if (!this.cycle) return;\n this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000);\n },\n updateReverse: function updateReverse(val, oldVal) {\n if (this.changedByDelimiters) {\n this.changedByDelimiters = false;\n return;\n }\n _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.updateReverse.call(this, val, oldVal);\n }\n },\n render: function render(h) {\n var children = [];\n var data = {\n staticClass: 'v-window v-carousel',\n style: {\n height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"convertToUnit\"])(this.height)\n },\n directives: []\n };\n if (!this.touchless) {\n data.directives.push({\n name: 'touch',\n value: {\n left: this.next,\n right: this.prev\n }\n });\n }\n if (!this.hideControls) {\n children.push(this.genIcons());\n }\n if (!this.hideDelimiters) {\n children.push(this.genDelimiters());\n }\n return h('div', data, [this.genContainer(), children]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/VCarouselItem.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VCarousel/VCarouselItem.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VImg */ \"./src/components/VImg/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Extensions\n\n// Components\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'v-carousel-item',\n inheritAttrs: false,\n methods: {\n genDefaultSlot: function genDefaultSlot() {\n return [this.$createElement(_VImg__WEBPACK_IMPORTED_MODULE_1__[\"VImg\"], {\n staticClass: 'v-carousel__item',\n props: __assign({}, this.$attrs, { height: this.windowGroup.internalHeight }),\n on: this.$listeners\n }, this.$slots.default)];\n },\n onBeforeEnter: function onBeforeEnter() {},\n onEnter: function onEnter() {},\n onAfterEnter: function onAfterEnter() {},\n onBeforeLeave: function onBeforeLeave() {},\n onEnterCancelled: function onEnterCancelled() {}\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCarousel/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VCarousel/index.ts ***!\n \\*******************************************/\n/*! exports provided: VCarousel, VCarouselItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCarousel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCarousel */ \"./src/components/VCarousel/VCarousel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarousel\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VCarouselItem */ \"./src/components/VCarousel/VCarouselItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselItem\", function() { return _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VCarousel: _VCarousel__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VCarouselItem: _VCarouselItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/VCheckbox.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VCheckbox/VCheckbox.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_selection-controls.styl */ \"./src/stylus/components/_selection-controls.styl\");\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Components\n\n// import { VFadeTransition } from '../transitions'\n// Mixins\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-checkbox',\n mixins: [_mixins_selectable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$vuetify.icons.checkboxIndeterminate'\n },\n onIcon: {\n type: String,\n default: '$vuetify.icons.checkboxOn'\n },\n offIcon: {\n type: String,\n default: '$vuetify.icons.checkboxOff'\n }\n },\n data: function data(vm) {\n return {\n inputIndeterminate: vm.indeterminate\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true\n };\n },\n computedIcon: function computedIcon() {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon;\n } else if (this.isActive) {\n return this.onIcon;\n } else {\n return this.offIcon;\n }\n }\n },\n watch: {\n indeterminate: function indeterminate(val) {\n this.inputIndeterminate = val;\n }\n },\n methods: {\n genCheckbox: function genCheckbox() {\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.genInput('checkbox', __assign({}, this.$attrs, { 'aria-checked': this.inputIndeterminate ? 'mixed' : this.isActive.toString() })), this.genRipple(this.setTextColor(this.computedColor)), this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.setTextColor(this.computedColor, {\n props: {\n dark: this.dark,\n light: this.light\n }\n }), this.computedIcon)]);\n },\n genDefaultSlot: function genDefaultSlot() {\n return [this.genCheckbox(), this.genLabel()];\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCheckbox/index.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VCheckbox/index.js ***!\n \\*******************************************/\n/*! exports provided: VCheckbox, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCheckbox */ \"./src/components/VCheckbox/VCheckbox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCheckbox\", function() { return _VCheckbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCheckbox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VChip/VChip.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VChip/VChip.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_chips_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_chips.styl */ \"./src/stylus/components/_chips.styl\");\n/* harmony import */ var _stylus_components_chips_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_chips_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n// Components\n\n// Mixins\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).extend({\n name: 'v-chip',\n props: {\n close: Boolean,\n disabled: Boolean,\n label: Boolean,\n outline: Boolean,\n // Used for selects/tagging\n selected: Boolean,\n small: Boolean,\n textColor: String,\n value: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-chip--disabled': this.disabled, 'v-chip--selected': this.selected && !this.disabled, 'v-chip--label': this.label, 'v-chip--outline': this.outline, 'v-chip--small': this.small, 'v-chip--removable': this.close }, this.themeClasses);\n }\n },\n methods: {\n genClose: function genClose(h) {\n var _this = this;\n var data = {\n staticClass: 'v-chip__close',\n on: {\n click: function click(e) {\n e.stopPropagation();\n _this.$emit('input', false);\n }\n }\n };\n return h('div', data, [h(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], '$vuetify.icons.delete')]);\n },\n genContent: function genContent(h) {\n return h('span', {\n staticClass: 'v-chip__content'\n }, [this.$slots.default, this.close && this.genClose(h)]);\n }\n },\n render: function render(h) {\n var data = this.setBackgroundColor(this.color, {\n staticClass: 'v-chip',\n 'class': this.classes,\n attrs: { tabindex: this.disabled ? -1 : 0 },\n directives: [{\n name: 'show',\n value: this.isActive\n }],\n on: this.$listeners\n });\n var color = this.textColor || this.outline && this.color;\n return h('span', this.setTextColor(color, data), [this.genContent(h)]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VChip/index.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VChip/index.ts ***!\n \\***************************************/\n/*! exports provided: VChip, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VChip */ \"./src/components/VChip/VChip.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChip\", function() { return _VChip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VChip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VCombobox/VCombobox.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VCombobox/VCombobox.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_autocompletes.styl */ \"./src/stylus/components/_autocompletes.styl\");\n/* harmony import */ var _stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_autocompletes_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.js\");\n/* harmony import */ var _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAutocomplete/VAutocomplete */ \"./src/components/VAutocomplete/VAutocomplete.js\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n\n// Extensions\n\n\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-combobox',\n extends: _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n props: {\n delimiters: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n returnObject: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n editingIndex: -1\n };\n },\n computed: {\n counterValue: function counterValue() {\n return this.multiple ? this.selectedItems.length : (this.internalSearch || '').toString().length;\n },\n hasSlot: function hasSlot() {\n return _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.hasSlot.call(this) || this.multiple;\n },\n isAnyValueAllowed: function isAnyValueAllowed() {\n return true;\n },\n menuCanShow: function menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !!this.$slots['no-data'] && !this.hideNoData;\n }\n },\n methods: {\n onFilteredItemsChanged: function onFilteredItemsChanged() {\n // nop\n },\n onInternalSearchChanged: function onInternalSearchChanged(val) {\n if (val && this.multiple && this.delimiters.length) {\n var delimiter = this.delimiters.find(function (d) {\n return val.endsWith(d);\n });\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length);\n this.updateTags();\n }\n }\n this.updateMenuDimensions();\n },\n genChipSelection: function genChipSelection(item, index) {\n var _this = this;\n var chip = _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genChipSelection.call(this, item, index);\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions.listeners.dblclick = function () {\n _this.editingIndex = index;\n _this.internalSearch = _this.getText(item);\n _this.selectedIndex = -1;\n };\n }\n return chip;\n },\n onChipInput: function onChipInput(item) {\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onChipInput.call(this, item);\n this.editingIndex = -1;\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown: function onEnterDown(e) {\n e.preventDefault();\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onEnterDown.call(this);\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return;\n this.updateSelf();\n },\n onKeyDown: function onKeyDown(e) {\n var keyCode = e.keyCode;\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onKeyDown.call(this, e);\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple && keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].left && this.$refs.input.selectionStart === 0) {\n this.updateSelf();\n }\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode);\n },\n onTabDown: function onTabDown(e) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple && this.internalSearch && this.getMenuIndex() === -1) {\n e.preventDefault();\n e.stopPropagation();\n return this.updateTags();\n }\n _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.onTabDown.call(this, e);\n },\n selectItem: function selectItem(item) {\n // Currently only supports items:<string[]>\n if (this.editingIndex > -1) {\n this.updateEditing();\n } else {\n _VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.selectItem.call(this, item);\n }\n },\n setSelectedItems: function setSelectedItems() {\n if (this.internalValue == null || this.internalValue === '') {\n this.selectedItems = [];\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue];\n }\n },\n setValue: function setValue(value) {\n if (value === void 0) {\n value = this.internalSearch;\n }\n _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setValue.call(this, value);\n },\n updateEditing: function updateEditing() {\n var value = this.internalValue.slice();\n value[this.editingIndex] = this.internalSearch;\n this.setValue(value);\n this.editingIndex = -1;\n },\n updateCombobox: function updateCombobox() {\n var isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips;\n // If search is not dirty and is\n // using slot, do nothing\n if (isUsingSlot && !this.searchIsDirty) return;\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue();\n // Reset search if using slot\n // to avoid a double input\n if (isUsingSlot) this.internalSearch = undefined;\n },\n updateSelf: function updateSelf() {\n this.multiple ? this.updateTags() : this.updateCombobox();\n },\n updateTags: function updateTags() {\n var menuIndex = this.getMenuIndex();\n // If the user is not searching\n // and no menu item is selected\n // do nothing\n if (menuIndex < 0 && !this.searchIsDirty) return;\n if (this.editingIndex > -1) {\n return this.updateEditing();\n }\n var index = this.selectedItems.indexOf(this.internalSearch);\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n var internalValue = this.internalValue.slice();\n internalValue.splice(index, 1);\n this.setValue(internalValue);\n }\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return this.internalSearch = null;\n this.selectItem(this.internalSearch);\n this.internalSearch = null;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VCombobox/index.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VCombobox/index.js ***!\n \\*******************************************/\n/*! exports provided: VCombobox, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCombobox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCombobox */ \"./src/components/VCombobox/VCombobox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCombobox\", function() { return _VCombobox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCombobox__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VCounter/VCounter.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VCounter/VCounter.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_counters_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_counters.styl */ \"./src/stylus/components/_counters.styl\");\n/* harmony import */ var _stylus_components_counters_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_counters_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-counter',\n functional: true,\n props: {\n value: {\n type: [Number, String],\n default: ''\n },\n max: [Number, String]\n },\n render: function render(h, ctx) {\n var props = ctx.props;\n var max = parseInt(props.max, 10);\n var value = parseInt(props.value, 10);\n var content = max ? value + \" / \" + max : String(props.value);\n var isGreater = max && value > max;\n return h('div', {\n staticClass: 'v-counter',\n class: __assign({ 'error--text': isGreater }, Object(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"functionalThemeClasses\"])(ctx))\n }, content);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VCounter/index.ts\":\n/*!******************************************!*\\\n !*** ./src/components/VCounter/index.ts ***!\n \\******************************************/\n/*! exports provided: VCounter, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VCounter */ \"./src/components/VCounter/VCounter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCounter\", function() { return _VCounter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VCounter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/VDataIterator.js\":\n/*!*******************************************************!*\\\n !*** ./src/components/VDataIterator/VDataIterator.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_data_iterator_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_data-iterator.styl */ \"./src/stylus/components/_data-iterator.styl\");\n/* harmony import */ var _stylus_components_data_iterator_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_data_iterator_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_data_iterable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/data-iterable */ \"./src/mixins/data-iterable.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-data-iterator',\n mixins: [_mixins_data_iterable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]],\n inheritAttrs: false,\n props: {\n contentTag: {\n type: String,\n default: 'div'\n },\n contentProps: {\n type: Object,\n required: false\n },\n contentClass: {\n type: String,\n required: false\n }\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-data-iterator': true, 'v-data-iterator--select-all': this.selectAll !== false }, this.themeClasses);\n }\n },\n created: function created() {\n this.initPagination();\n },\n methods: {\n genContent: function genContent() {\n var children = this.genItems();\n var data = {\n 'class': this.contentClass,\n attrs: this.$attrs,\n on: this.$listeners,\n props: this.contentProps\n };\n return this.$createElement(this.contentTag, data, children);\n },\n genEmptyItems: function genEmptyItems(content) {\n return [this.$createElement('div', {\n 'class': 'text-xs-center',\n style: 'width: 100%'\n }, content)];\n },\n genFilteredItems: function genFilteredItems() {\n if (!this.$scopedSlots.item) {\n return null;\n }\n var items = [];\n for (var index = 0, len = this.filteredItems.length; index < len; ++index) {\n var item = this.filteredItems[index];\n var props = this.createProps(item, index);\n items.push(this.$scopedSlots.item(props));\n }\n return items;\n },\n genFooter: function genFooter() {\n var children = [];\n if (this.$slots.footer) {\n children.push(this.$slots.footer);\n }\n if (!this.hideActions) {\n children.push(this.genActions());\n }\n if (!children.length) return null;\n return this.$createElement('div', children);\n },\n genHeader: function genHeader() {\n var children = [];\n if (this.$slots.header) {\n children.push(this.$slots.header);\n }\n if (!children.length) return null;\n return this.$createElement('div', children);\n }\n },\n render: function render(h) {\n return h('div', {\n 'class': this.classes\n }, [this.genHeader(), this.genContent(), this.genFooter()]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataIterator/index.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VDataIterator/index.js ***!\n \\***********************************************/\n/*! exports provided: VDataIterator, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDataIterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDataIterator */ \"./src/components/VDataIterator/VDataIterator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataIterator\", function() { return _VDataIterator__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDataIterator__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VDataTable.js\":\n/*!*************************************************!*\\\n !*** ./src/components/VDataTable/VDataTable.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_tables_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_tables.styl */ \"./src/stylus/components/_tables.styl\");\n/* harmony import */ var _stylus_components_tables_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_tables_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stylus_components_data_table_styl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../stylus/components/_data-table.styl */ \"./src/stylus/components/_data-table.styl\");\n/* harmony import */ var _stylus_components_data_table_styl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_data_table_styl__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_data_iterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/data-iterable */ \"./src/mixins/data-iterable.js\");\n/* harmony import */ var _mixins_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/head */ \"./src/components/VDataTable/mixins/head.js\");\n/* harmony import */ var _mixins_body__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mixins/body */ \"./src/components/VDataTable/mixins/body.js\");\n/* harmony import */ var _mixins_foot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mixins/foot */ \"./src/components/VDataTable/mixins/foot.js\");\n/* harmony import */ var _mixins_progress__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mixins/progress */ \"./src/components/VDataTable/mixins/progress.js\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n\n// Importing does not work properly\nvar VTableOverflow = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"createSimpleFunctional\"])('v-table__overflow');\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-data-table',\n mixins: [_mixins_data_iterable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_head__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_body__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_foot__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_progress__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n props: {\n headers: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n headersLength: {\n type: Number\n },\n headerText: {\n type: String,\n default: 'text'\n },\n headerKey: {\n type: String,\n default: null\n },\n hideHeaders: Boolean,\n rowsPerPageText: {\n type: String,\n default: '$vuetify.dataTable.rowsPerPageText'\n },\n customFilter: {\n type: Function,\n default: function _default(items, search, filter, headers) {\n search = search.toString().toLowerCase();\n if (search.trim() === '') return items;\n var props = headers.map(function (h) {\n return h.value;\n });\n return items.filter(function (item) {\n return props.some(function (prop) {\n return filter(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getObjectValueByPath\"])(item, prop, item[prop]), search);\n });\n });\n }\n }\n },\n data: function data() {\n return {\n actionsClasses: 'v-datatable__actions',\n actionsRangeControlsClasses: 'v-datatable__actions__range-controls',\n actionsSelectClasses: 'v-datatable__actions__select',\n actionsPaginationClasses: 'v-datatable__actions__pagination'\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-datatable v-table': true, 'v-datatable--select-all': this.selectAll !== false }, this.themeClasses);\n },\n filteredItems: function filteredItems() {\n return this.filteredItemsImpl(this.headers);\n },\n headerColumns: function headerColumns() {\n return this.headersLength || this.headers.length + (this.selectAll !== false);\n }\n },\n created: function created() {\n var firstSortable = this.headers.find(function (h) {\n return !('sortable' in h) || h.sortable;\n });\n this.defaultPagination.sortBy = !this.disableInitialSort && firstSortable ? firstSortable.value : null;\n this.initPagination();\n },\n methods: {\n hasTag: function hasTag(elements, tag) {\n return Array.isArray(elements) && elements.find(function (e) {\n return e.tag === tag;\n });\n },\n genTR: function genTR(children, data) {\n if (data === void 0) {\n data = {};\n }\n return this.$createElement('tr', data, children);\n }\n },\n render: function render(h) {\n var tableOverflow = h(VTableOverflow, {}, [h('table', {\n 'class': this.classes\n }, [this.genTHead(), this.genTBody(), this.genTFoot()])]);\n return h('div', [tableOverflow, this.genActionsFooter()]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/VEditDialog.js\":\n/*!**************************************************!*\\\n !*** ./src/components/VDataTable/VEditDialog.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_small_dialog_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_small-dialog.styl */ \"./src/stylus/components/_small-dialog.styl\");\n/* harmony import */ var _stylus_components_small_dialog_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_small_dialog_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VMenu */ \"./src/components/VMenu/index.js\");\n\n// Mixins\n\n\n// Utils\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-edit-dialog',\n mixins: [_mixins_returnable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n cancelText: {\n default: 'Cancel'\n },\n large: Boolean,\n lazy: Boolean,\n persistent: Boolean,\n saveText: {\n default: 'Save'\n },\n transition: {\n type: String,\n default: 'slide-x-reverse-transition'\n }\n },\n data: function data() {\n return {\n isActive: false\n };\n },\n watch: {\n isActive: function isActive(val) {\n if (val) {\n this.$emit('open');\n setTimeout(this.focus, 50); // Give DOM time to paint\n } else {\n this.$emit('close');\n }\n }\n },\n methods: {\n cancel: function cancel() {\n this.isActive = false;\n this.$emit('cancel');\n },\n focus: function focus() {\n var input = this.$refs.content.querySelector('input');\n input && input.focus();\n },\n genButton: function genButton(fn, text) {\n return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n props: {\n flat: true,\n color: 'primary',\n light: true\n },\n on: { click: fn }\n }, text);\n },\n genActions: function genActions() {\n var _this = this;\n return this.$createElement('div', {\n 'class': 'v-small-dialog__actions'\n }, [this.genButton(this.cancel, this.cancelText), this.genButton(function () {\n _this.save(_this.returnValue);\n _this.$emit('save');\n }, this.saveText)]);\n },\n genContent: function genContent() {\n var _this = this;\n return this.$createElement('div', {\n on: {\n keydown: function keydown(e) {\n var input = _this.$refs.content.querySelector('input');\n e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].esc && _this.cancel();\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"keyCodes\"].enter && input) {\n _this.save(input.value);\n _this.$emit('save');\n }\n }\n },\n ref: 'content'\n }, [this.$slots.input]);\n }\n },\n render: function render(h) {\n var _this = this;\n return h(_VMenu__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n staticClass: 'v-small-dialog',\n class: this.themeClasses,\n props: {\n contentClass: 'v-small-dialog__content',\n transition: this.transition,\n origin: 'top right',\n right: true,\n value: this.isActive,\n closeOnClick: !this.persistent,\n closeOnContentClick: false,\n lazy: this.lazy,\n light: this.light,\n dark: this.dark\n },\n on: {\n input: function input(val) {\n return _this.isActive = val;\n }\n }\n }, [h('a', {\n slot: 'activator'\n }, this.$slots.default), this.genContent(), this.large ? this.genActions() : null]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/index.js\":\n/*!********************************************!*\\\n !*** ./src/components/VDataTable/index.js ***!\n \\********************************************/\n/*! exports provided: VDataTable, VEditDialog, VTableOverflow, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTableOverflow\", function() { return VTableOverflow; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VDataTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDataTable */ \"./src/components/VDataTable/VDataTable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VEditDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VEditDialog */ \"./src/components/VDataTable/VEditDialog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VEditDialog\", function() { return _VEditDialog__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\nvar VTableOverflow = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-table__overflow');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VDataTable: _VDataTable__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VEditDialog: _VEditDialog__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VTableOverflow: VTableOverflow\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/mixins/body.js\":\n/*!**************************************************!*\\\n !*** ./src/components/VDataTable/mixins/body.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions_expand_transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../transitions/expand-transition */ \"./src/components/transitions/expand-transition.js\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n genTBody: function genTBody() {\n var children = this.genItems();\n return this.$createElement('tbody', children);\n },\n genExpandedRow: function genExpandedRow(props) {\n var children = [];\n if (this.isExpanded(props.item)) {\n var expand = this.$createElement('div', {\n class: 'v-datatable__expand-content',\n key: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(props.item, this.itemKey)\n }, [this.$scopedSlots.expand(props)]);\n children.push(expand);\n }\n var classes = {\n 'v-datatable__expand-col': true,\n 'v-datatable__expand-col--expanded': this.isExpanded(props.item)\n };\n var transition = this.$createElement('transition-group', {\n class: classes,\n attrs: { colspan: this.headerColumns },\n props: {\n tag: 'td'\n },\n on: Object(_transitions_expand_transition__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v-datatable__expand-col--expanded')\n }, children);\n return this.genTR([transition], { class: 'v-datatable__expand-row' });\n },\n genFilteredItems: function genFilteredItems() {\n if (!this.$scopedSlots.items) {\n return null;\n }\n var rows = [];\n for (var index = 0, len = this.filteredItems.length; index < len; ++index) {\n var item = this.filteredItems[index];\n var props = this.createProps(item, index);\n var row = this.$scopedSlots.items(props);\n rows.push(this.hasTag(row, 'td') ? this.genTR(row, {\n key: this.itemKey ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(props.item, this.itemKey) : index,\n attrs: { active: this.isSelected(item) }\n }) : row);\n if (this.$scopedSlots.expand) {\n var expandRow = this.genExpandedRow(props);\n rows.push(expandRow);\n }\n }\n return rows;\n },\n genEmptyItems: function genEmptyItems(content) {\n if (this.hasTag(content, 'tr')) {\n return content;\n } else if (this.hasTag(content, 'td')) {\n return this.genTR(content);\n } else {\n return this.genTR([this.$createElement('td', {\n class: {\n 'text-xs-center': typeof content === 'string'\n },\n attrs: { colspan: this.headerColumns }\n }, content)]);\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/mixins/foot.js\":\n/*!**************************************************!*\\\n !*** ./src/components/VDataTable/mixins/foot.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n genTFoot: function genTFoot() {\n if (!this.$slots.footer) {\n return null;\n }\n var footer = this.$slots.footer;\n var row = this.hasTag(footer, 'td') ? this.genTR(footer) : footer;\n return this.$createElement('tfoot', [row]);\n },\n genActionsFooter: function genActionsFooter() {\n if (this.hideActions) {\n return null;\n }\n return this.$createElement('div', {\n 'class': this.classes\n }, this.genActions());\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/mixins/head.js\":\n/*!**************************************************!*\\\n !*** ./src/components/VDataTable/mixins/head.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../VCheckbox */ \"./src/components/VCheckbox/index.js\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../VIcon */ \"./src/components/VIcon/index.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n sortIcon: {\n type: String,\n default: '$vuetify.icons.sort'\n }\n },\n methods: {\n genTHead: function genTHead() {\n var _this = this;\n if (this.hideHeaders) return; // Exit Early since no headers are needed.\n var children = [];\n if (this.$scopedSlots.headers) {\n var row = this.$scopedSlots.headers({\n headers: this.headers,\n indeterminate: this.indeterminate,\n all: this.everyItem\n });\n children = [this.hasTag(row, 'th') ? this.genTR(row) : row, this.genTProgress()];\n } else {\n var row = this.headers.map(function (o, i) {\n return _this.genHeader(o, _this.headerKey ? o[_this.headerKey] : i);\n });\n var checkbox = this.$createElement(_VCheckbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n dark: this.dark,\n light: this.light,\n color: this.selectAll === true ? '' : this.selectAll,\n hideDetails: true,\n inputValue: this.everyItem,\n indeterminate: this.indeterminate\n },\n on: { change: this.toggle }\n });\n this.hasSelectAll && row.unshift(this.$createElement('th', [checkbox]));\n children = [this.genTR(row), this.genTProgress()];\n }\n return this.$createElement('thead', [children]);\n },\n genHeader: function genHeader(header, key) {\n var array = [this.$scopedSlots.headerCell ? this.$scopedSlots.headerCell({ header: header }) : header[this.headerText]];\n return this.$createElement.apply(this, __spread(['th'], this.genHeaderData(header, array, key)));\n },\n genHeaderData: function genHeaderData(header, children, key) {\n var classes = ['column'];\n var data = {\n key: key,\n attrs: {\n role: 'columnheader',\n scope: 'col',\n width: header.width || null,\n 'aria-label': header[this.headerText] || '',\n 'aria-sort': 'none'\n }\n };\n if (header.sortable == null || header.sortable) {\n this.genHeaderSortingData(header, children, data, classes);\n } else {\n data.attrs['aria-label'] += ': Not sorted.'; // TODO: Localization\n }\n classes.push(\"text-xs-\" + (header.align || 'left'));\n if (Array.isArray(header.class)) {\n classes.push.apply(classes, __spread(header.class));\n } else if (header.class) {\n classes.push(header.class);\n }\n data.class = classes;\n return [data, children];\n },\n genHeaderSortingData: function genHeaderSortingData(header, children, data, classes) {\n var _this = this;\n if (!('value' in header)) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])('Headers must have a value property that corresponds to a value in the v-model array', this);\n }\n data.attrs.tabIndex = 0;\n data.on = {\n click: function click() {\n _this.expanded = {};\n _this.sort(header.value);\n },\n keydown: function keydown(e) {\n // check for space\n if (e.keyCode === 32) {\n e.preventDefault();\n _this.sort(header.value);\n }\n }\n };\n classes.push('sortable');\n var icon = this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n small: true\n }\n }, this.sortIcon);\n if (!header.align || header.align === 'left') {\n children.push(icon);\n } else {\n children.unshift(icon);\n }\n var pagination = this.computedPagination;\n var beingSorted = pagination.sortBy === header.value;\n if (beingSorted) {\n classes.push('active');\n if (pagination.descending) {\n classes.push('desc');\n data.attrs['aria-sort'] = 'descending';\n data.attrs['aria-label'] += ': Sorted descending. Activate to remove sorting.'; // TODO: Localization\n } else {\n classes.push('asc');\n data.attrs['aria-sort'] = 'ascending';\n data.attrs['aria-label'] += ': Sorted ascending. Activate to sort descending.'; // TODO: Localization\n }\n } else {\n data.attrs['aria-label'] += ': Not sorted. Activate to sort ascending.'; // TODO: Localization\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDataTable/mixins/progress.js\":\n/*!******************************************************!*\\\n !*** ./src/components/VDataTable/mixins/progress.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n genTProgress: function genTProgress() {\n var col = this.$createElement('th', {\n staticClass: 'column',\n attrs: {\n colspan: this.headerColumns\n }\n }, [this.genProgress()]);\n return this.genTR([col], {\n staticClass: 'v-datatable__progress'\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePicker.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePicker.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePickerTitle */ \"./src/components/VDatePicker/VDatePickerTitle.ts\");\n/* harmony import */ var _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDatePickerHeader */ \"./src/components/VDatePicker/VDatePickerHeader.ts\");\n/* harmony import */ var _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDatePickerDateTable */ \"./src/components/VDatePicker/VDatePickerDateTable.ts\");\n/* harmony import */ var _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VDatePickerMonthTable */ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\");\n/* harmony import */ var _VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VDatePickerYears */ \"./src/components/VDatePicker/VDatePickerYears.ts\");\n/* harmony import */ var _mixins_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/picker */ \"./src/mixins/picker.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/isDateAllowed */ \"./src/components/VDatePicker/util/isDateAllowed.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../VCalendar/util/timestamp */ \"./src/components/VCalendar/util/timestamp.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n// Components\n\n\n\n\n\n// Mixins\n\n// Utils\n\n\n\n\n\n// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nfunction sanitizeDateString(dateString, type) {\n var _a = __read(dateString.split('-'), 3),\n year = _a[0],\n _b = _a[1],\n month = _b === void 0 ? 1 : _b,\n _c = _a[2],\n date = _c === void 0 ? 1 : _c;\n return (year + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(month) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(date)).substr(0, { date: 10, month: 7, year: 4 }[type]);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(_mixins_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker',\n props: {\n allowedDates: Function,\n // Function formatting the day in date picker table\n dayFormat: Function,\n disabled: Boolean,\n events: {\n type: [Array, Function, Object],\n default: function _default() {\n return null;\n }\n },\n eventColor: {\n type: [Array, Function, Object, String],\n default: function _default() {\n return 'warning';\n }\n },\n firstDayOfWeek: {\n type: [String, Number],\n default: 0\n },\n // Function formatting the tableDate in the day/month table header\n headerDateFormat: Function,\n locale: {\n type: String,\n default: 'en-us'\n },\n max: String,\n min: String,\n // Function formatting month in the months table\n monthFormat: Function,\n multiple: Boolean,\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n pickerDate: String,\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n reactive: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n showCurrent: {\n type: [Boolean, String],\n default: true\n },\n showWeek: Boolean,\n // Function formatting currently selected date in the picker title\n titleDateFormat: Function,\n type: {\n type: String,\n default: 'date',\n validator: function validator(type) {\n return ['date', 'month'].includes(type);\n } // TODO: year\n },\n value: [Array, String],\n weekdayFormat: Function,\n // Function formatting the year in table header and pickup title\n yearFormat: Function,\n yearIcon: String\n },\n data: function data() {\n var _this = this;\n var now = new Date();\n return {\n activePicker: this.type.toUpperCase(),\n inputDay: null,\n inputMonth: null,\n inputYear: null,\n isReversing: false,\n now: now,\n // tableDate is a string in 'YYYY' / 'YYYY-M' format (leading zero for month is not required)\n tableDate: function () {\n if (_this.pickerDate) {\n return _this.pickerDate;\n }\n var date = (_this.multiple ? _this.value[_this.value.length - 1] : _this.value) || now.getFullYear() + \"-\" + (now.getMonth() + 1);\n return sanitizeDateString(date, _this.type === 'date' ? 'month' : 'year');\n }()\n };\n },\n computed: {\n lastValue: function lastValue() {\n return this.multiple ? this.value[this.value.length - 1] : this.value;\n },\n selectedMonths: function selectedMonths() {\n if (!this.value || !this.value.length || this.type === 'month') {\n return this.value;\n } else if (this.multiple) {\n return this.value.map(function (val) {\n return val.substr(0, 7);\n });\n } else {\n return this.value.substr(0, 7);\n }\n },\n current: function current() {\n if (this.showCurrent === true) {\n return sanitizeDateString(this.now.getFullYear() + \"-\" + (this.now.getMonth() + 1) + \"-\" + this.now.getDate(), this.type);\n }\n return this.showCurrent || null;\n },\n inputDate: function inputDate() {\n return this.type === 'date' ? this.inputYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.inputMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.inputDay) : this.inputYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.inputMonth + 1);\n },\n tableMonth: function tableMonth() {\n return Number((this.pickerDate || this.tableDate).split('-')[1]) - 1;\n },\n tableYear: function tableYear() {\n return Number((this.pickerDate || this.tableDate).split('-')[0]);\n },\n minMonth: function minMonth() {\n return this.min ? sanitizeDateString(this.min, 'month') : null;\n },\n maxMonth: function maxMonth() {\n return this.max ? sanitizeDateString(this.max, 'month') : null;\n },\n minYear: function minYear() {\n return this.min ? sanitizeDateString(this.min, 'year') : null;\n },\n maxYear: function maxYear() {\n return this.max ? sanitizeDateString(this.max, 'year') : null;\n },\n formatters: function formatters() {\n return {\n year: this.yearFormat || Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.locale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 }),\n titleDate: this.titleDateFormat || (this.multiple ? this.defaultTitleMultipleDateFormatter : this.defaultTitleDateFormatter)\n };\n },\n defaultTitleMultipleDateFormatter: function defaultTitleMultipleDateFormatter() {\n var _this = this;\n if (this.value.length < 2) {\n return function (dates) {\n return dates.length ? _this.defaultTitleDateFormatter(dates[0]) : '0 selected';\n };\n }\n return function (dates) {\n return dates.length + \" selected\";\n };\n },\n defaultTitleDateFormatter: function defaultTitleDateFormatter() {\n var titleFormats = {\n year: { year: 'numeric', timeZone: 'UTC' },\n month: { month: 'long', timeZone: 'UTC' },\n date: { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }\n };\n var titleDateFormatter = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"createNativeLocaleFormatter\"])(this.locale, titleFormats[this.type], {\n start: 0,\n length: { date: 10, month: 7, year: 4 }[this.type]\n });\n var landscapeFormatter = function landscapeFormatter(date) {\n return titleDateFormatter(date).replace(/([^\\d\\s])([\\d])/g, function (match, nonDigit, digit) {\n return nonDigit + \" \" + digit;\n }).replace(', ', ',<br>');\n };\n return this.landscape ? landscapeFormatter : titleDateFormatter;\n }\n },\n watch: {\n tableDate: function tableDate(val, prev) {\n // Make a ISO 8601 strings from val and prev for comparision, otherwise it will incorrectly\n // compare for example '2000-9' and '2000-10'\n var sanitizeType = this.type === 'month' ? 'year' : 'month';\n this.isReversing = sanitizeDateString(val, sanitizeType) < sanitizeDateString(prev, sanitizeType);\n this.$emit('update:pickerDate', val);\n },\n pickerDate: function pickerDate(val) {\n if (val) {\n this.tableDate = val;\n } else if (this.lastValue && this.type === 'date') {\n this.tableDate = sanitizeDateString(this.lastValue, 'month');\n } else if (this.lastValue && this.type === 'month') {\n this.tableDate = sanitizeDateString(this.lastValue, 'year');\n }\n },\n value: function value(newValue, oldValue) {\n this.checkMultipleProp();\n this.setInputDate();\n if (!this.multiple && this.value && !this.pickerDate) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month');\n } else if (this.multiple && this.value.length && !oldValue.length && !this.pickerDate) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month');\n }\n },\n type: function type(_type) {\n this.activePicker = _type.toUpperCase();\n if (this.value && this.value.length) {\n var output = (this.multiple ? this.value : [this.value]).map(function (val) {\n return sanitizeDateString(val, _type);\n }).filter(this.isDateAllowed);\n this.$emit('input', this.multiple ? output : output[0]);\n }\n }\n },\n created: function created() {\n this.checkMultipleProp();\n if (this.pickerDate !== this.tableDate) {\n this.$emit('update:pickerDate', this.tableDate);\n }\n this.setInputDate();\n },\n methods: {\n emitInput: function emitInput(newInput) {\n var output = this.multiple ? this.value.indexOf(newInput) === -1 ? this.value.concat([newInput]) : this.value.filter(function (x) {\n return x !== newInput;\n }) : newInput;\n this.$emit('input', output);\n this.multiple || this.$emit('change', newInput);\n },\n checkMultipleProp: function checkMultipleProp() {\n if (this.value == null) return;\n var valueType = this.value.constructor.name;\n var expected = this.multiple ? 'Array' : 'String';\n if (valueType !== expected) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"consoleWarn\"])(\"Value must be \" + (this.multiple ? 'an' : 'a') + \" \" + expected + \", got \" + valueType, this);\n }\n },\n isDateAllowed: function isDateAllowed(value) {\n return Object(_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(value, this.min, this.max, this.allowedDates);\n },\n yearClick: function yearClick(value) {\n this.inputYear = value;\n if (this.type === 'month') {\n this.tableDate = \"\" + value;\n } else {\n this.tableDate = value + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])((this.tableMonth || 0) + 1);\n }\n this.activePicker = 'MONTH';\n if (this.reactive && !this.readonly && !this.multiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate);\n }\n },\n monthClick: function monthClick(value) {\n this.inputYear = parseInt(value.split('-')[0], 10);\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1;\n if (this.type === 'date') {\n if (this.inputDay) {\n this.inputDay = Math.min(this.inputDay, Object(_VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_9__[\"daysInMonth\"])(this.inputYear, this.inputMonth + 1));\n }\n this.tableDate = value;\n this.activePicker = 'DATE';\n if (this.reactive && !this.readonly && !this.multiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate);\n }\n } else {\n this.emitInput(this.inputDate);\n }\n },\n dateClick: function dateClick(value) {\n this.inputYear = parseInt(value.split('-')[0], 10);\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1;\n this.inputDay = parseInt(value.split('-')[2], 10);\n this.emitInput(this.inputDate);\n },\n genPickerTitle: function genPickerTitle() {\n var _this = this;\n return this.$createElement(_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n props: {\n date: this.value ? this.formatters.titleDate(this.value) : '',\n disabled: this.disabled,\n readonly: this.readonly,\n selectingYear: this.activePicker === 'YEAR',\n year: this.formatters.year(this.value ? \"\" + this.inputYear : this.tableDate),\n yearIcon: this.yearIcon,\n value: this.multiple ? this.value[0] : this.value\n },\n slot: 'title',\n on: {\n 'update:selectingYear': function updateSelectingYear(value) {\n return _this.activePicker = value ? 'YEAR' : _this.type.toUpperCase();\n }\n }\n });\n },\n genTableHeader: function genTableHeader() {\n var _this = this;\n return this.$createElement(_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n nextIcon: this.nextIcon,\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n format: this.headerDateFormat,\n light: this.light,\n locale: this.locale,\n min: this.activePicker === 'DATE' ? this.minMonth : this.minYear,\n max: this.activePicker === 'DATE' ? this.maxMonth : this.maxYear,\n prevIcon: this.prevIcon,\n readonly: this.readonly,\n value: this.activePicker === 'DATE' ? Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableYear, 4) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableMonth + 1) : \"\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableYear, 4)\n },\n on: {\n toggle: function toggle() {\n return _this.activePicker = _this.activePicker === 'DATE' ? 'MONTH' : 'YEAR';\n },\n input: function input(value) {\n return _this.tableDate = value;\n }\n }\n });\n },\n genDateTable: function genDateTable() {\n var _this = this;\n return this.$createElement(_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n allowedDates: this.allowedDates,\n color: this.color,\n current: this.current,\n dark: this.dark,\n disabled: this.disabled,\n events: this.events,\n eventColor: this.eventColor,\n firstDayOfWeek: this.firstDayOfWeek,\n format: this.dayFormat,\n light: this.light,\n locale: this.locale,\n min: this.min,\n max: this.max,\n readonly: this.readonly,\n scrollable: this.scrollable,\n showWeek: this.showWeek,\n tableDate: Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableYear, 4) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableMonth + 1),\n value: this.value,\n weekdayFormat: this.weekdayFormat\n },\n ref: 'table',\n on: {\n input: this.dateClick,\n tableDate: function tableDate(value) {\n return _this.tableDate = value;\n },\n 'click:date': function clickDate(value) {\n return _this.$emit('click:date', value);\n },\n 'dblclick:date': function dblclickDate(value) {\n return _this.$emit('dblclick:date', value);\n }\n }\n });\n },\n genMonthTable: function genMonthTable() {\n var _this = this;\n return this.$createElement(_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n props: {\n allowedDates: this.type === 'month' ? this.allowedDates : null,\n color: this.color,\n current: this.current ? sanitizeDateString(this.current, 'month') : null,\n dark: this.dark,\n disabled: this.disabled,\n events: this.type === 'month' ? this.events : null,\n eventColor: this.type === 'month' ? this.eventColor : null,\n format: this.monthFormat,\n light: this.light,\n locale: this.locale,\n min: this.minMonth,\n max: this.maxMonth,\n readonly: this.readonly && this.type === 'month',\n scrollable: this.scrollable,\n value: this.selectedMonths,\n tableDate: \"\" + Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pad\"])(this.tableYear, 4)\n },\n ref: 'table',\n on: {\n input: this.monthClick,\n tableDate: function tableDate(value) {\n return _this.tableDate = value;\n },\n 'click:month': function clickMonth(value) {\n return _this.$emit('click:month', value);\n },\n 'dblclick:month': function dblclickMonth(value) {\n return _this.$emit('dblclick:month', value);\n }\n }\n });\n },\n genYears: function genYears() {\n return this.$createElement(_VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n props: {\n color: this.color,\n format: this.yearFormat,\n locale: this.locale,\n min: this.minYear,\n max: this.maxYear,\n value: this.tableYear\n },\n on: {\n input: this.yearClick\n }\n });\n },\n genPickerBody: function genPickerBody() {\n var children = this.activePicker === 'YEAR' ? [this.genYears()] : [this.genTableHeader(), this.activePicker === 'DATE' ? this.genDateTable() : this.genMonthTable()];\n return this.$createElement('div', {\n key: this.activePicker\n }, children);\n },\n setInputDate: function setInputDate() {\n if (this.lastValue) {\n var array = this.lastValue.split('-');\n this.inputYear = parseInt(array[0], 10);\n this.inputMonth = parseInt(array[1], 10) - 1;\n if (this.type === 'date') {\n this.inputDay = parseInt(array[2], 10);\n }\n } else {\n this.inputYear = this.inputYear || this.now.getFullYear();\n this.inputMonth = this.inputMonth == null ? this.inputMonth : this.now.getMonth();\n this.inputDay = this.inputDay || this.now.getDate();\n }\n }\n },\n render: function render() {\n return this.genPicker('v-picker--date');\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerDateTable.ts\":\n/*!************************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePickerDateTable.ts ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/date-picker-table */ \"./src/components/VDatePicker/mixins/date-picker-table.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n\n// Utils\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker-date-table',\n props: {\n firstDayOfWeek: {\n type: [String, Number],\n default: 0\n },\n showWeek: Boolean,\n weekdayFormat: Function\n },\n computed: {\n formatter: function formatter() {\n return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"createNativeLocaleFormatter\"])(this.locale, { day: 'numeric', timeZone: 'UTC' }, { start: 8, length: 2 });\n },\n weekdayFormatter: function weekdayFormatter() {\n return this.weekdayFormat || Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"createNativeLocaleFormatter\"])(this.locale, { weekday: 'narrow', timeZone: 'UTC' });\n },\n weekDays: function weekDays() {\n var _this = this;\n var first = parseInt(this.firstDayOfWeek, 10);\n return this.weekdayFormatter ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(7).map(function (i) {\n return _this.weekdayFormatter(\"2017-01-\" + (first + i + 15));\n }) // 2017-01-15 is Sunday\n : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(7).map(function (i) {\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7];\n });\n }\n },\n methods: {\n calculateTableDate: function calculateTableDate(delta) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"monthChange\"])(this.tableDate, Math.sign(delta || 1));\n },\n genTHead: function genTHead() {\n var _this = this;\n var days = this.weekDays.map(function (day) {\n return _this.$createElement('th', day);\n });\n this.showWeek && days.unshift(this.$createElement('th'));\n return this.$createElement('thead', this.genTR(days));\n },\n // Returns number of the days from the firstDayOfWeek to the first day of the current month\n weekDaysBeforeFirstDayOfTheMonth: function weekDaysBeforeFirstDayOfTheMonth() {\n var firstDayOfTheMonth = new Date(this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pad\"])(this.displayedMonth + 1) + \"-01T00:00:00+00:00\");\n var weekDay = firstDayOfTheMonth.getUTCDay();\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7;\n },\n getWeekNumber: function getWeekNumber() {\n var dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][this.displayedMonth];\n if (this.displayedMonth > 1 && (this.displayedYear % 4 === 0 && this.displayedYear % 100 !== 0 || this.displayedYear % 400 === 0)) {\n dayOfYear++;\n }\n var offset = (this.displayedYear + (this.displayedYear - 1 >> 2) - Math.floor((this.displayedYear - 1) / 100) + Math.floor((this.displayedYear - 1) / 400) - Number(this.firstDayOfWeek)) % 7; // https://en.wikipedia.org/wiki/Zeller%27s_congruence\n return Math.floor((dayOfYear + offset) / 7) + 1;\n },\n genWeekNumber: function genWeekNumber(weekNumber) {\n return this.$createElement('td', [this.$createElement('small', {\n staticClass: 'v-date-picker-table--date__week'\n }, String(weekNumber).padStart(2, '0'))]);\n },\n genTBody: function genTBody() {\n var children = [];\n var daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate();\n var rows = [];\n var day = this.weekDaysBeforeFirstDayOfTheMonth();\n var weekNumber = this.getWeekNumber();\n this.showWeek && rows.push(this.genWeekNumber(weekNumber++));\n while (day--) {\n rows.push(this.$createElement('td'));\n }for (day = 1; day <= daysInMonth; day++) {\n var date = this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pad\"])(this.displayedMonth + 1) + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pad\"])(day);\n rows.push(this.$createElement('td', [this.genButton(date, true, 'date', this.formatter)]));\n if (rows.length % (this.showWeek ? 8 : 7) === 0) {\n children.push(this.genTR(rows));\n rows = [];\n day < daysInMonth && this.showWeek && rows.push(this.genWeekNumber(weekNumber++));\n }\n }\n if (rows.length) {\n children.push(this.genTR(rows));\n }\n return this.$createElement('tbody', children);\n },\n genTR: function genTR(children) {\n return [this.$createElement('tr', children)];\n }\n },\n render: function render() {\n return this.genTable('v-date-picker-table v-date-picker-table--date', [this.genTHead(), this.genTBody()], this.calculateTableDate);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerHeader.ts\":\n/*!*********************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePickerHeader.ts ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_date_picker_header_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_date-picker-header.styl */ \"./src/stylus/components/_date-picker-header.styl\");\n/* harmony import */ var _stylus_components_date_picker_header_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_date_picker_header_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n\n// Components\n\n\n// Mixins\n\n\n// Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker-header',\n props: {\n disabled: Boolean,\n format: Function,\n locale: {\n type: String,\n default: 'en-us'\n },\n min: String,\n max: String,\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n readonly: Boolean,\n value: {\n type: [Number, String],\n required: true\n }\n },\n data: function data() {\n return {\n isReversing: false\n };\n },\n computed: {\n formatter: function formatter() {\n if (this.format) {\n return this.format;\n } else if (String(this.value).split('-')[1]) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"createNativeLocaleFormatter\"])(this.locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }, { length: 7 });\n } else {\n return Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"createNativeLocaleFormatter\"])(this.locale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 });\n }\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n this.isReversing = newVal < oldVal;\n }\n },\n methods: {\n genBtn: function genBtn(change) {\n var _this = this;\n var disabled = this.disabled || change < 0 && this.min && this.calculateChange(change) < this.min || change > 0 && this.max && this.calculateChange(change) > this.max;\n return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n dark: this.dark,\n disabled: disabled,\n icon: true,\n light: this.light\n },\n nativeOn: {\n click: function click(e) {\n e.stopPropagation();\n _this.$emit('input', _this.calculateChange(change));\n }\n }\n }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], change < 0 === !this.$vuetify.rtl ? this.prevIcon : this.nextIcon)]);\n },\n calculateChange: function calculateChange(sign) {\n var _a = __read(String(this.value).split('-').map(Number), 2),\n year = _a[0],\n month = _a[1];\n if (month == null) {\n return \"\" + (year + sign);\n } else {\n return Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"monthChange\"])(String(this.value), sign);\n }\n },\n genHeader: function genHeader() {\n var _this = this;\n var color = !this.disabled && (this.color || 'accent');\n var header = this.$createElement('div', this.setTextColor(color, {\n key: String(this.value)\n }), [this.$createElement('button', {\n attrs: {\n type: 'button'\n },\n on: {\n click: function click() {\n return _this.$emit('toggle');\n }\n }\n }, [this.$slots.default || this.formatter(String(this.value))])]);\n var transition = this.$createElement('transition', {\n props: {\n name: this.isReversing === !this.$vuetify.rtl ? 'tab-reverse-transition' : 'tab-transition'\n }\n }, [header]);\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header__value',\n class: {\n 'v-date-picker-header__value--disabled': this.disabled\n }\n }, [transition]);\n }\n },\n render: function render() {\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header',\n class: __assign({ 'v-date-picker-header--disabled': this.disabled }, this.themeClasses)\n }, [this.genBtn(-1), this.genHeader(), this.genBtn(+1)]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\":\n/*!*************************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePickerMonthTable.ts ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins/date-picker-table */ \"./src/components/VDatePicker/mixins/date-picker-table.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n\n// Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker-month-table',\n computed: {\n formatter: function formatter() {\n return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"createNativeLocaleFormatter\"])(this.locale, { month: 'short', timeZone: 'UTC' }, { start: 5, length: 2 });\n }\n },\n methods: {\n calculateTableDate: function calculateTableDate(delta) {\n return \"\" + (parseInt(this.tableDate, 10) + Math.sign(delta || 1));\n },\n genTBody: function genTBody() {\n var _this = this;\n var children = [];\n var cols = Array(3).fill(null);\n var rows = 12 / cols.length;\n var _loop_1 = function _loop_1(row) {\n var tds = cols.map(function (_, col) {\n var month = row * cols.length + col;\n var date = _this.displayedYear + \"-\" + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pad\"])(month + 1);\n return _this.$createElement('td', {\n key: month\n }, [_this.genButton(date, false, 'month', _this.formatter)]);\n });\n children.push(this_1.$createElement('tr', {\n key: row\n }, tds));\n };\n var this_1 = this;\n for (var row = 0; row < rows; row++) {\n _loop_1(row);\n }\n return this.$createElement('tbody', children);\n }\n },\n render: function render() {\n return this.genTable('v-date-picker-table v-date-picker-table--month', [this.genTBody()], this.calculateTableDate);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerTitle.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePickerTitle.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_date_picker_title_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_date-picker-title.styl */ \"./src/stylus/components/_date-picker-title.styl\");\n/* harmony import */ var _stylus_components_date_picker_title_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_date_picker_title_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/picker-button */ \"./src/mixins/picker-button.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n// Components\n\n// Mixins\n\n// Utils\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n props: {\n date: {\n type: String,\n default: ''\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String\n },\n year: {\n type: [Number, String],\n default: ''\n },\n yearIcon: {\n type: String\n }\n },\n data: function data() {\n return {\n isReversing: false\n };\n },\n computed: {\n computedTransition: function computedTransition() {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition';\n }\n },\n watch: {\n value: function value(val, prev) {\n this.isReversing = val < prev;\n }\n },\n methods: {\n genYearIcon: function genYearIcon() {\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n dark: true\n }\n }, this.yearIcon);\n },\n getYearBtn: function getYearBtn() {\n return this.genPickerButton('selectingYear', true, [String(this.year), this.yearIcon ? this.genYearIcon() : null], false, 'v-date-picker-title__year');\n },\n genTitleText: function genTitleText() {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition\n }\n }, [this.$createElement('div', {\n domProps: { innerHTML: this.date || '&nbsp;' },\n key: this.value\n })]);\n },\n genTitleDate: function genTitleDate() {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date');\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-date-picker-title',\n 'class': {\n 'v-date-picker-title--disabled': this.disabled\n }\n }, [this.getYearBtn(), this.genTitleDate()]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/VDatePickerYears.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/VDatePicker/VDatePickerYears.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_date_picker_years_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_date-picker-years.styl */ \"./src/stylus/components/_date-picker-years.styl\");\n/* harmony import */ var _stylus_components_date_picker_years_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_date_picker_years_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n// Mixins\n\n// Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-date-picker-years',\n props: {\n format: Function,\n locale: {\n type: String,\n default: 'en-us'\n },\n min: [Number, String],\n max: [Number, String],\n readonly: Boolean,\n value: [Number, String]\n },\n data: function data() {\n return {\n defaultColor: 'primary'\n };\n },\n computed: {\n formatter: function formatter() {\n return this.format || Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"createNativeLocaleFormatter\"])(this.locale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 });\n }\n },\n mounted: function mounted() {\n var _this = this;\n setTimeout(function () {\n var activeItem = _this.$el.getElementsByClassName('active')[0];\n if (activeItem) {\n _this.$el.scrollTop = activeItem.offsetTop - _this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2;\n } else {\n _this.$el.scrollTop = _this.$el.scrollHeight / 2 - _this.$el.offsetHeight / 2;\n }\n });\n },\n methods: {\n genYearItem: function genYearItem(year) {\n var _this = this;\n var formatted = this.formatter(\"\" + year);\n var active = parseInt(this.value, 10) === year;\n var color = active && (this.color || 'primary');\n return this.$createElement('li', this.setTextColor(color, {\n key: year,\n 'class': { active: active },\n on: {\n click: function click() {\n return _this.$emit('input', year);\n }\n }\n }), formatted);\n },\n genYearItems: function genYearItems() {\n var children = [];\n var selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear();\n var maxYear = this.max ? parseInt(this.max, 10) : selectedYear + 100;\n var minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : selectedYear - 100);\n for (var year = maxYear; year >= minYear; year--) {\n children.push(this.genYearItem(year));\n }\n return children;\n }\n },\n render: function render() {\n return this.$createElement('ul', {\n staticClass: 'v-date-picker-years',\n ref: 'years'\n }, this.genYearItems());\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/index.js\":\n/*!*********************************************!*\\\n !*** ./src/components/VDatePicker/index.js ***!\n \\*********************************************/\n/*! exports provided: VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDatePicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDatePicker */ \"./src/components/VDatePicker/VDatePicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePicker\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VDatePickerTitle */ \"./src/components/VDatePicker/VDatePickerTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerTitle\", function() { return _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VDatePickerHeader */ \"./src/components/VDatePicker/VDatePickerHeader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerHeader\", function() { return _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VDatePickerDateTable */ \"./src/components/VDatePicker/VDatePickerDateTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerDateTable\", function() { return _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VDatePickerMonthTable */ \"./src/components/VDatePicker/VDatePickerMonthTable.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerMonthTable\", function() { return _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VDatePickerYears */ \"./src/components/VDatePicker/VDatePickerYears.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerYears\", function() { return _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VDatePicker: _VDatePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VDatePickerTitle: _VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VDatePickerHeader: _VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VDatePickerDateTable: _VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VDatePickerMonthTable: _VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n VDatePickerYears: _VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/mixins/date-picker-table.ts\":\n/*!****************************************************************!*\\\n !*** ./src/components/VDatePicker/mixins/date-picker-table.ts ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_date_picker_table_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../stylus/components/_date-picker-table.styl */ \"./src/stylus/components/_date-picker-table.styl\");\n/* harmony import */ var _stylus_components_date_picker_table_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_date_picker_table_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../directives/touch */ \"./src/directives/touch.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_isDateAllowed__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isDateAllowed */ \"./src/components/VDatePicker/util/isDateAllowed.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Directives\n\n// Mixins\n\n\n// Utils\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n directives: { Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_1__[\"default\"] },\n props: {\n allowedDates: Function,\n current: String,\n disabled: Boolean,\n format: Function,\n events: {\n type: [Array, Function, Object],\n default: function _default() {\n return null;\n }\n },\n eventColor: {\n type: [Array, Function, Object, String],\n default: function _default() {\n return 'warning';\n }\n },\n locale: {\n type: String,\n default: 'en-us'\n },\n min: String,\n max: String,\n readonly: Boolean,\n scrollable: Boolean,\n tableDate: {\n type: String,\n required: true\n },\n value: [String, Array]\n },\n data: function data() {\n return {\n isReversing: false\n };\n },\n computed: {\n computedTransition: function computedTransition() {\n return this.isReversing === !this.$vuetify.rtl ? 'tab-reverse-transition' : 'tab-transition';\n },\n displayedMonth: function displayedMonth() {\n return Number(this.tableDate.split('-')[1]) - 1;\n },\n displayedYear: function displayedYear() {\n return Number(this.tableDate.split('-')[0]);\n }\n },\n watch: {\n tableDate: function tableDate(newVal, oldVal) {\n this.isReversing = newVal < oldVal;\n }\n },\n methods: {\n genButtonClasses: function genButtonClasses(isAllowed, isFloating, isSelected, isCurrent) {\n return __assign({ 'v-btn--active': isSelected, 'v-btn--flat': !isSelected, 'v-btn--icon': isSelected && isAllowed && isFloating, 'v-btn--floating': isFloating, 'v-btn--depressed': !isFloating && isSelected, 'v-btn--disabled': !isAllowed || this.disabled && isSelected, 'v-btn--outline': isCurrent && !isSelected }, this.themeClasses);\n },\n genButtonEvents: function genButtonEvents(value, isAllowed, mouseEventType) {\n var _this = this;\n if (this.disabled) return undefined;\n return {\n click: function click() {\n isAllowed && !_this.readonly && _this.$emit('input', value);\n _this.$emit(\"click:\" + mouseEventType, value);\n },\n dblclick: function dblclick() {\n return _this.$emit(\"dblclick:\" + mouseEventType, value);\n }\n };\n },\n genButton: function genButton(value, isFloating, mouseEventType, formatter) {\n var isAllowed = Object(_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value, this.min, this.max, this.allowedDates);\n var isSelected = value === this.value || Array.isArray(this.value) && this.value.indexOf(value) !== -1;\n var isCurrent = value === this.current;\n var setColor = isSelected ? this.setBackgroundColor : this.setTextColor;\n var color = (isSelected || isCurrent) && (this.color || 'accent');\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n 'class': this.genButtonClasses(isAllowed, isFloating, isSelected, isCurrent),\n attrs: {\n type: 'button'\n },\n domProps: {\n disabled: this.disabled || !isAllowed\n },\n on: this.genButtonEvents(value, isAllowed, mouseEventType)\n }), [this.$createElement('div', {\n staticClass: 'v-btn__content'\n }, [formatter(value)]), this.genEvents(value)]);\n },\n getEventColors: function getEventColors(date) {\n var arrayize = function arrayize(v) {\n return Array.isArray(v) ? v : [v];\n };\n var eventData;\n var eventColors = [];\n if (Array.isArray(this.events)) {\n eventData = this.events.includes(date);\n } else if (this.events instanceof Function) {\n eventData = this.events(date) || false;\n } else if (this.events) {\n eventData = this.events[date] || false;\n } else {\n eventData = false;\n }\n if (!eventData) {\n return [];\n } else if (eventData !== true) {\n eventColors = arrayize(eventData);\n } else if (typeof this.eventColor === 'string') {\n eventColors = [this.eventColor];\n } else if (typeof this.eventColor === 'function') {\n eventColors = arrayize(this.eventColor(date));\n } else if (Array.isArray(this.eventColor)) {\n eventColors = this.eventColor;\n } else {\n eventColors = arrayize(this.eventColor[date]);\n }\n return eventColors.filter(function (v) {\n return v;\n });\n },\n genEvents: function genEvents(date) {\n var _this = this;\n var eventColors = this.getEventColors(date);\n return eventColors.length ? this.$createElement('div', {\n staticClass: 'v-date-picker-table__events'\n }, eventColors.map(function (color) {\n return _this.$createElement('div', _this.setBackgroundColor(color));\n })) : null;\n },\n wheel: function wheel(e, calculateTableDate) {\n e.preventDefault();\n this.$emit('tableDate', calculateTableDate(e.deltaY));\n },\n touch: function touch(value, calculateTableDate) {\n this.$emit('tableDate', calculateTableDate(value));\n },\n genTable: function genTable(staticClass, children, calculateTableDate) {\n var _this = this;\n var transition = this.$createElement('transition', {\n props: { name: this.computedTransition }\n }, [this.$createElement('table', { key: this.tableDate }, children)]);\n var touchDirective = {\n name: 'touch',\n value: {\n left: function left(e) {\n return e.offsetX < -15 && _this.touch(1, calculateTableDate);\n },\n right: function right(e) {\n return e.offsetX > 15 && _this.touch(-1, calculateTableDate);\n }\n }\n };\n return this.$createElement('div', {\n staticClass: staticClass,\n class: __assign({ 'v-date-picker-table--disabled': this.disabled }, this.themeClasses),\n on: !this.disabled && this.scrollable ? {\n wheel: function wheel(e) {\n return _this.wheel(e, calculateTableDate);\n }\n } : undefined,\n directives: [touchDirective]\n }, [transition]);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/createNativeLocaleFormatter.ts\":\n/*!************************************************************************!*\\\n !*** ./src/components/VDatePicker/util/createNativeLocaleFormatter.ts ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n\nfunction createNativeLocaleFormatter(locale, options, substrOptions) {\n if (substrOptions === void 0) {\n substrOptions = { start: 0, length: 0 };\n }\n var makeIsoString = function makeIsoString(dateString) {\n var _a = __read(dateString.trim().split(' ')[0].split('-'), 3),\n year = _a[0],\n month = _a[1],\n date = _a[2];\n return [Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(year, 4), Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(month || 1), Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(date || 1)].join('-');\n };\n try {\n var intlFormatter_1 = new Intl.DateTimeFormat(locale || undefined, options);\n return function (dateString) {\n return intlFormatter_1.format(new Date(makeIsoString(dateString) + \"T00:00:00+00:00\"));\n };\n } catch (e) {\n return substrOptions.start || substrOptions.length ? function (dateString) {\n return makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length);\n } : undefined;\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (createNativeLocaleFormatter);\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/index.ts\":\n/*!**************************************************!*\\\n !*** ./src/components/VDatePicker/util/index.ts ***!\n \\**************************************************/\n/*! exports provided: createNativeLocaleFormatter, monthChange, pad */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createNativeLocaleFormatter */ \"./src/components/VDatePicker/util/createNativeLocaleFormatter.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createNativeLocaleFormatter\", function() { return _createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _monthChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./monthChange */ \"./src/components/VDatePicker/util/monthChange.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"monthChange\", function() { return _monthChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return _pad__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/isDateAllowed.ts\":\n/*!**********************************************************!*\\\n !*** ./src/components/VDatePicker/util/isDateAllowed.ts ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isDateAllowed; });\nfunction isDateAllowed(date, min, max, allowedFn) {\n return (!allowedFn || allowedFn(date)) && (!min || date >= min) && (!max || date <= max);\n}\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/monthChange.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/VDatePicker/util/monthChange.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pad */ \"./src/components/VDatePicker/util/pad.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value, sign) {\n var _a = __read(value.split('-').map(Number), 2),\n year = _a[0],\n month = _a[1];\n if (month + sign === 0) {\n return year - 1 + \"-12\";\n } else if (month + sign === 13) {\n return year + 1 + \"-01\";\n } else {\n return year + \"-\" + Object(_pad__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(month + sign);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDatePicker/util/pad.ts\":\n/*!************************************************!*\\\n !*** ./src/components/VDatePicker/util/pad.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar padStart = function padStart(string, targetLength, padString) {\n targetLength = targetLength >> 0;\n string = String(string);\n padString = String(padString);\n if (string.length > targetLength) {\n return String(string);\n }\n targetLength = targetLength - string.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(string);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (n, length) {\n if (length === void 0) {\n length = 2;\n }\n return padStart(n, length, '0');\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDialog/VDialog.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VDialog/VDialog.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_dialogs_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_dialogs.styl */ \"./src/stylus/components/_dialogs.styl\");\n/* harmony import */ var _stylus_components_dialogs_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_dialogs_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent.ts\");\n/* harmony import */ var _mixins_detachable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/detachable */ \"./src/mixins/detachable.js\");\n/* harmony import */ var _mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/overlayable */ \"./src/mixins/overlayable.ts\");\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable.ts\");\n/* harmony import */ var _mixins_stackable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/stackable */ \"./src/mixins/stackable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_ThemeProvider__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/ThemeProvider */ \"./src/util/ThemeProvider.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Mixins\n\n\n\n\n\n\n// Directives\n\n// Helpers\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-dialog',\n directives: {\n ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n mixins: [_mixins_dependent__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_detachable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_returnable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_stackable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n props: {\n disabled: Boolean,\n persistent: Boolean,\n fullscreen: Boolean,\n fullWidth: Boolean,\n noClickAnimation: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [String, Number],\n default: 'none'\n },\n origin: {\n type: String,\n default: 'center center'\n },\n width: {\n type: [String, Number],\n default: 'auto'\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition'\n }\n },\n data: function data() {\n return {\n animate: false,\n animateTimeout: null,\n stackClass: 'v-dialog__content--active',\n stackMinZIndex: 200\n };\n },\n computed: {\n classes: function classes() {\n var _a;\n return _a = {}, _a[(\"v-dialog \" + this.contentClass).trim()] = true, _a['v-dialog--active'] = this.isActive, _a['v-dialog--persistent'] = this.persistent, _a['v-dialog--fullscreen'] = this.fullscreen, _a['v-dialog--scrollable'] = this.scrollable, _a['v-dialog--animated'] = this.animate, _a;\n },\n contentClasses: function contentClasses() {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive\n };\n },\n hasActivator: function hasActivator() {\n return Boolean(!!this.$slots.activator || !!this.$scopedSlots.activator);\n }\n },\n watch: {\n isActive: function isActive(val) {\n if (val) {\n this.show();\n this.hideScroll();\n } else {\n this.removeOverlay();\n }\n },\n fullscreen: function fullscreen(val) {\n if (!this.isActive) return;\n if (val) {\n this.hideScroll();\n this.removeOverlay(false);\n } else {\n this.showScroll();\n this.genOverlay();\n }\n }\n },\n beforeMount: function beforeMount() {\n var _this = this;\n this.$nextTick(function () {\n _this.isBooted = _this.isActive;\n _this.isActive && _this.show();\n });\n },\n mounted: function mounted() {\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlotType\"])(this, 'activator', true) === 'v-slot') {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"consoleError\"])(\"v-dialog's activator slot must be bound, try '<template #activator=\\\"data\\\"><v-btn v-on=\\\"data.on>'\", this);\n }\n },\n methods: {\n animateClick: function animateClick() {\n var _this = this;\n this.animate = false;\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(function () {\n _this.animate = true;\n clearTimeout(_this.animateTimeout);\n _this.animateTimeout = setTimeout(function () {\n return _this.animate = false;\n }, 150);\n });\n },\n closeConditional: function closeConditional(e) {\n // If the dialog content contains\n // the click event, or if the\n // dialog is not active\n if (this._isDestroyed || !this.isActive || this.$refs.content.contains(e.target)) return false;\n // If we made it here, the click is outside\n // and is active. If persistent, and the\n // click is on the overlay, animate\n if (this.persistent) {\n if (!this.noClickAnimation && this.overlay === e.target) this.animateClick();\n return false;\n }\n // close dialog if !persistent, clicked outside and we're the topmost dialog.\n // Since this should only be called in a capture event (bottom up), we shouldn't need to stop propagation\n return this.activeZIndex >= this.getMaxZIndex();\n },\n hideScroll: function hideScroll() {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden');\n } else {\n _mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.methods.hideScroll.call(this);\n }\n },\n show: function show() {\n !this.fullscreen && !this.hideOverlay && this.genOverlay();\n this.$refs.content.focus();\n },\n onKeydown: function onKeydown(e) {\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"keyCodes\"].esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false;\n var activator_1 = this.getActivator();\n this.$nextTick(function () {\n return activator_1 && activator_1.focus();\n });\n } else if (!this.noClickAnimation) {\n this.animateClick();\n }\n }\n this.$emit('keydown', e);\n },\n getActivator: function getActivator(e) {\n if (this.$refs.activator) {\n return this.$refs.activator.children.length > 0 ? this.$refs.activator.children[0] : this.$refs.activator;\n }\n if (e) {\n this.activatedBy = e.currentTarget || e.target;\n }\n if (this.activatedBy) return this.activatedBy;\n if (this.activatorNode) {\n var activator = Array.isArray(this.activatorNode) ? this.activatorNode[0] : this.activatorNode;\n var el = activator && activator.elm;\n if (el) return el;\n }\n return null;\n },\n genActivator: function genActivator() {\n var _this = this;\n if (!this.hasActivator) return null;\n var listeners = this.disabled ? {} : {\n click: function click(e) {\n e.stopPropagation();\n _this.getActivator(e);\n if (!_this.disabled) _this.isActive = !_this.isActive;\n }\n };\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"getSlotType\"])(this, 'activator') === 'scoped') {\n var activator = this.$scopedSlots.activator({ on: listeners });\n this.activatorNode = activator;\n return activator;\n }\n return this.$createElement('div', {\n staticClass: 'v-dialog__activator',\n class: {\n 'v-dialog__activator--disabled': this.disabled\n },\n ref: 'activator',\n on: listeners\n }, this.$slots.activator);\n }\n },\n render: function render(h) {\n var _this = this;\n var children = [];\n var data = {\n 'class': this.classes,\n ref: 'dialog',\n directives: [{\n name: 'click-outside',\n value: function value() {\n _this.isActive = false;\n },\n args: {\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements\n }\n }, { name: 'show', value: this.isActive }],\n on: {\n click: function click(e) {\n e.stopPropagation();\n }\n }\n };\n if (!this.fullscreen) {\n data.style = {\n maxWidth: this.maxWidth === 'none' ? undefined : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.maxWidth),\n width: this.width === 'auto' ? undefined : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__[\"convertToUnit\"])(this.width)\n };\n }\n children.push(this.genActivator());\n var dialog = h('div', data, this.showLazyContent(this.$slots.default));\n if (this.transition) {\n dialog = h('transition', {\n props: {\n name: this.transition,\n origin: this.origin\n }\n }, [dialog]);\n }\n children.push(h('div', {\n 'class': this.contentClasses,\n attrs: __assign({ tabIndex: '-1' }, this.getScopeIdAttrs()),\n on: {\n keydown: this.onKeydown\n },\n style: { zIndex: this.activeZIndex },\n ref: 'content'\n }, [this.$createElement(_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n props: {\n root: true,\n light: this.light,\n dark: this.dark\n }\n }, [dialog])]));\n return h('div', {\n staticClass: 'v-dialog__container',\n style: {\n display: !this.hasActivator || this.fullWidth ? 'block' : 'inline-block'\n }\n }, children);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VDialog/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VDialog/index.js ***!\n \\*****************************************/\n/*! exports provided: VDialog, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDialog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDialog */ \"./src/components/VDialog/VDialog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialog\", function() { return _VDialog__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDialog__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VDivider/VDivider.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VDivider/VDivider.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_dividers_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_dividers.styl */ \"./src/stylus/components/_dividers.styl\");\n/* harmony import */ var _stylus_components_dividers_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_dividers_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-divider',\n props: {\n inset: Boolean,\n vertical: Boolean\n },\n render: function render(h) {\n return h('hr', {\n class: __assign({ 'v-divider': true, 'v-divider--inset': this.inset, 'v-divider--vertical': this.vertical }, this.themeClasses),\n attrs: this.$attrs,\n on: this.$listeners\n });\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VDivider/index.ts\":\n/*!******************************************!*\\\n !*** ./src/components/VDivider/index.ts ***!\n \\******************************************/\n/*! exports provided: VDivider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VDivider */ \"./src/components/VDivider/VDivider.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDivider\", function() { return _VDivider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VDivider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanel.ts\":\n/*!***********************************************************!*\\\n !*** ./src/components/VExpansionPanel/VExpansionPanel.ts ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_expansion_panel_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_expansion-panel.styl */ \"./src/stylus/components/_expansion-panel.styl\");\n/* harmony import */ var _stylus_components_expansion_panel_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_expansion_panel_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"provide\"])('expansionPanel')).extend({\n name: 'v-expansion-panel',\n provide: function provide() {\n return {\n expansionPanel: this\n };\n },\n props: {\n disabled: Boolean,\n readonly: Boolean,\n expand: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n value: {\n type: [Number, Array],\n default: function _default() {\n return null;\n }\n }\n },\n data: function data() {\n return {\n items: [],\n open: []\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-expansion-panel--focusable': this.focusable, 'v-expansion-panel--popout': this.popout, 'v-expansion-panel--inset': this.inset }, this.themeClasses);\n }\n },\n watch: {\n expand: function expand(v) {\n var openIndex = -1;\n if (!v) {\n // Close all panels unless only one is open\n var openCount = this.open.reduce(function (acc, val) {\n return val ? acc + 1 : acc;\n }, 0);\n var open = Array(this.items.length).fill(false);\n if (openCount === 1) {\n openIndex = this.open.indexOf(true);\n }\n if (openIndex > -1) {\n open[openIndex] = true;\n }\n this.open = open;\n }\n this.$emit('input', v ? this.open : openIndex > -1 ? openIndex : null);\n },\n value: function value(v) {\n this.updateFromValue(v);\n }\n },\n mounted: function mounted() {\n this.value !== null && this.updateFromValue(this.value);\n },\n methods: {\n updateFromValue: function updateFromValue(v) {\n if (Array.isArray(v) && !this.expand) return;\n var open = Array(this.items.length).fill(false);\n if (typeof v === 'number') {\n open[v] = true;\n } else if (v !== null) {\n open = v;\n }\n this.updatePanels(open);\n },\n updatePanels: function updatePanels(open) {\n this.open = open;\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].toggle(open && open[i]);\n }\n },\n panelClick: function panelClick(uid) {\n var open = this.expand ? this.open.slice() : Array(this.items.length).fill(false);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i]._uid === uid) {\n open[i] = !this.open[i];\n !this.expand && this.$emit('input', open[i] ? i : null);\n }\n }\n this.updatePanels(open);\n if (this.expand) this.$emit('input', open);\n },\n register: function register(content) {\n var i = this.items.push(content) - 1;\n this.value !== null && this.updateFromValue(this.value);\n content.toggle(!!this.open[i]);\n },\n unregister: function unregister(content) {\n var index = this.items.findIndex(function (i) {\n return i._uid === content._uid;\n });\n this.items.splice(index, 1);\n this.open.splice(index, 1);\n }\n },\n render: function render(h) {\n return h('ul', {\n staticClass: 'v-expansion-panel',\n class: this.classes\n }, this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/VExpansionPanelContent.ts\":\n/*!******************************************************************!*\\\n !*** ./src/components/VExpansionPanel/VExpansionPanelContent.ts ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_rippleable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/rippleable */ \"./src/mixins/rippleable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_bootable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_rippleable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_4__[\"inject\"])('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n/* @vue/component */\n).extend({\n name: 'v-expansion-panel-content',\n props: {\n disabled: Boolean,\n readonly: Boolean,\n expandIcon: {\n type: String,\n default: '$vuetify.icons.expand'\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false\n }\n },\n data: function data() {\n return {\n height: 'auto'\n };\n },\n computed: {\n containerClasses: function containerClasses() {\n return {\n 'v-expansion-panel__container--active': this.isActive,\n 'v-expansion-panel__container--disabled': this.isDisabled\n };\n },\n isDisabled: function isDisabled() {\n return this.expansionPanel.disabled || this.disabled;\n },\n isReadonly: function isReadonly() {\n return this.expansionPanel.readonly || this.readonly;\n }\n },\n beforeMount: function beforeMount() {\n this.expansionPanel.register(this);\n // Can be removed once fully deprecated\n if (typeof this.value !== 'undefined') Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleWarn\"])('v-model has been deprecated', this);\n },\n beforeDestroy: function beforeDestroy() {\n this.expansionPanel.unregister(this);\n },\n methods: {\n onKeydown: function onKeydown(e) {\n // Ensure element is the activeElement\n if (e.keyCode === 13 && this.$el === document.activeElement) this.expansionPanel.panelClick(this._uid);\n },\n onHeaderClick: function onHeaderClick() {\n this.isReadonly || this.expansionPanel.panelClick(this._uid);\n },\n genBody: function genBody() {\n return this.$createElement('div', {\n ref: 'body',\n class: 'v-expansion-panel__body',\n directives: [{\n name: 'show',\n value: this.isActive\n }]\n }, this.showLazyContent(this.$slots.default));\n },\n genHeader: function genHeader() {\n var children = __spread(this.$slots.header || []);\n if (!this.hideActions) children.push(this.genIcon());\n return this.$createElement('div', {\n staticClass: 'v-expansion-panel__header',\n directives: [{\n name: 'ripple',\n value: this.ripple\n }],\n on: {\n click: this.onHeaderClick\n }\n }, children);\n },\n genIcon: function genIcon() {\n var icon = this.$slots.actions || [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_5__[\"default\"], this.expandIcon)];\n return this.$createElement('transition', {\n attrs: { name: 'fade-transition' }\n }, [this.$createElement('div', {\n staticClass: 'v-expansion-panel__header__icon',\n directives: [{\n name: 'show',\n value: !this.isDisabled\n }]\n }, icon)]);\n },\n toggle: function toggle(active) {\n var _this = this;\n if (active) this.isBooted = true;\n this.$nextTick(function () {\n return _this.isActive = active;\n });\n }\n },\n render: function render(h) {\n return h('li', {\n staticClass: 'v-expansion-panel__container',\n class: this.containerClasses,\n attrs: {\n tabindex: this.isReadonly || this.isDisabled ? null : 0,\n 'aria-expanded': Boolean(this.isActive)\n },\n on: {\n keydown: this.onKeydown\n }\n }, [this.$slots.header && this.genHeader(), h(_transitions__WEBPACK_IMPORTED_MODULE_0__[\"VExpandTransition\"], [this.genBody()])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VExpansionPanel/index.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VExpansionPanel/index.ts ***!\n \\*************************************************/\n/*! exports provided: VExpansionPanel, VExpansionPanelContent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VExpansionPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VExpansionPanel */ \"./src/components/VExpansionPanel/VExpansionPanel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanel\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VExpansionPanelContent */ \"./src/components/VExpansionPanel/VExpansionPanelContent.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelContent\", function() { return _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VExpansionPanel: _VExpansionPanel__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VExpansionPanelContent: _VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VFooter/VFooter.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VFooter/VFooter.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_footer_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_footer.styl */ \"./src/stylus/components/_footer.styl\");\n/* harmony import */ var _stylus_components_footer_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_footer_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-footer',\n mixins: [Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(null, ['height', 'inset']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n props: {\n height: {\n default: 32,\n type: [Number, String]\n },\n inset: Boolean\n },\n computed: {\n applicationProperty: function applicationProperty() {\n return this.inset ? 'insetFooter' : 'footer';\n },\n computedMarginBottom: function computedMarginBottom() {\n if (!this.app) return;\n return this.$vuetify.application.bottom;\n },\n computedPaddingLeft: function computedPaddingLeft() {\n return !this.app || !this.inset ? 0 : this.$vuetify.application.left;\n },\n computedPaddingRight: function computedPaddingRight() {\n return !this.app || !this.inset ? 0 : this.$vuetify.application.right;\n },\n styles: function styles() {\n var styles = {\n height: isNaN(this.height) ? this.height : this.height + \"px\"\n };\n if (this.computedPaddingLeft) {\n styles.paddingLeft = this.computedPaddingLeft + \"px\";\n }\n if (this.computedPaddingRight) {\n styles.paddingRight = this.computedPaddingRight + \"px\";\n }\n if (this.computedMarginBottom) {\n styles.marginBottom = this.computedMarginBottom + \"px\";\n }\n return styles;\n }\n },\n methods: {\n /**\n * Update the application layout\n *\n * @return {number}\n */\n updateApplication: function updateApplication() {\n var height = parseInt(this.height);\n return isNaN(height) ? this.$el ? this.$el.clientHeight : 0 : height;\n }\n },\n render: function render(h) {\n var data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n 'class': __assign({ 'v-footer--absolute': this.absolute, 'v-footer--fixed': !this.absolute && (this.app || this.fixed), 'v-footer--inset': this.inset }, this.themeClasses),\n style: this.styles,\n ref: 'content'\n });\n return h('footer', data, this.$slots.default);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VFooter/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VFooter/index.js ***!\n \\*****************************************/\n/*! exports provided: VFooter, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VFooter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFooter */ \"./src/components/VFooter/VFooter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFooter\", function() { return _VFooter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VFooter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VForm/VForm.js\":\n/*!***************************************!*\\\n !*** ./src/components/VForm/VForm.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_forms_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_forms.styl */ \"./src/stylus/components/_forms.styl\");\n/* harmony import */ var _stylus_components_forms_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_forms_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n// Styles\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-form',\n mixins: [Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__[\"provide\"])('form')],\n inheritAttrs: false,\n props: {\n value: Boolean,\n lazyValidation: Boolean\n },\n data: function data() {\n return {\n inputs: [],\n watchers: [],\n errorBag: {}\n };\n },\n watch: {\n errorBag: {\n handler: function handler() {\n var errors = Object.values(this.errorBag).includes(true);\n this.$emit('input', !errors);\n },\n deep: true,\n immediate: true\n }\n },\n methods: {\n watchInput: function watchInput(input) {\n var _this = this;\n var watcher = function watcher(input) {\n return input.$watch('hasError', function (val) {\n _this.$set(_this.errorBag, input._uid, val);\n }, { immediate: true });\n };\n var watchers = {\n _uid: input._uid,\n valid: undefined,\n shouldValidate: undefined\n };\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', function (val) {\n if (!val) return;\n // Only watch if we're not already doing it\n if (_this.errorBag.hasOwnProperty(input._uid)) return;\n watchers.valid = watcher(input);\n });\n } else {\n watchers.valid = watcher(input);\n }\n return watchers;\n },\n /** @public */\n validate: function validate() {\n var errors = this.inputs.filter(function (input) {\n return !input.validate(true);\n }).length;\n return !errors;\n },\n /** @public */\n reset: function reset() {\n var _this = this;\n for (var i = this.inputs.length; i--;) {\n this.inputs[i].reset();\n }\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(function () {\n _this.errorBag = {};\n }, 0);\n }\n },\n /** @public */\n resetValidation: function resetValidation() {\n var _this = this;\n for (var i = this.inputs.length; i--;) {\n this.inputs[i].resetValidation();\n }\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(function () {\n _this.errorBag = {};\n }, 0);\n }\n },\n register: function register(input) {\n var unwatch = this.watchInput(input);\n this.inputs.push(input);\n this.watchers.push(unwatch);\n },\n unregister: function unregister(input) {\n var found = this.inputs.find(function (i) {\n return i._uid === input._uid;\n });\n if (!found) return;\n var unwatch = this.watchers.find(function (i) {\n return i._uid === found._uid;\n });\n unwatch.valid && unwatch.valid();\n unwatch.shouldValidate && unwatch.shouldValidate();\n this.watchers = this.watchers.filter(function (i) {\n return i._uid !== found._uid;\n });\n this.inputs = this.inputs.filter(function (i) {\n return i._uid !== found._uid;\n });\n this.$delete(this.errorBag, found._uid);\n }\n },\n render: function render(h) {\n var _this = this;\n return h('form', {\n staticClass: 'v-form',\n attrs: Object.assign({\n novalidate: true\n }, this.$attrs),\n on: {\n submit: function submit(e) {\n return _this.$emit('submit', e);\n }\n }\n }, this.$slots.default);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VForm/index.js\":\n/*!***************************************!*\\\n !*** ./src/components/VForm/index.js ***!\n \\***************************************/\n/*! exports provided: VForm, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VForm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VForm */ \"./src/components/VForm/VForm.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VForm\", function() { return _VForm__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VForm__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VContainer.js\":\n/*!********************************************!*\\\n !*** ./src/components/VGrid/VContainer.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_grid.styl */ \"./src/stylus/components/_grid.styl\");\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('container'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VContent.js\":\n/*!******************************************!*\\\n !*** ./src/components/VGrid/VContent.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_content_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_content.styl */ \"./src/stylus/components/_content.styl\");\n/* harmony import */ var _stylus_components_content_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_content_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable.ts\");\n// Styles\n\n// Mixins\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-content',\n mixins: [_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]],\n props: {\n tag: {\n type: String,\n default: 'main'\n }\n },\n computed: {\n styles: function styles() {\n var _a = this.$vuetify.application,\n bar = _a.bar,\n top = _a.top,\n right = _a.right,\n footer = _a.footer,\n insetFooter = _a.insetFooter,\n bottom = _a.bottom,\n left = _a.left;\n return {\n paddingTop: top + bar + \"px\",\n paddingRight: right + \"px\",\n paddingBottom: footer + insetFooter + bottom + \"px\",\n paddingLeft: left + \"px\"\n };\n }\n },\n render: function render(h) {\n var data = {\n staticClass: 'v-content',\n style: this.styles,\n ref: 'content'\n };\n return h(this.tag, data, [h('div', { staticClass: 'v-content__wrap' }, this.$slots.default)]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VFlex.js\":\n/*!***************************************!*\\\n !*** ./src/components/VGrid/VFlex.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_grid.styl */ \"./src/stylus/components/_grid.styl\");\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('flex'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/VLayout.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VGrid/VLayout.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_grid.styl */ \"./src/stylus/components/_grid.styl\");\n/* harmony import */ var _stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_grid_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./src/components/VGrid/grid.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_grid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('layout'));\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/grid.js\":\n/*!**************************************!*\\\n !*** ./src/components/VGrid/grid.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Grid; });\nfunction Grid(name) {\n /* @vue/component */\n return {\n name: \"v-\" + name,\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div'\n }\n },\n render: function render(h, _a) {\n var props = _a.props,\n data = _a.data,\n children = _a.children;\n data.staticClass = (name + \" \" + (data.staticClass || '')).trim();\n var attrs = data.attrs;\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {};\n var classes = Object.keys(attrs).filter(function (key) {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false;\n var value = attrs[key];\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs[key] = value;\n return false;\n }\n return value || typeof value === 'string';\n });\n if (classes.length) data.staticClass += \" \" + classes.join(' ');\n }\n if (props.id) {\n data.domProps = data.domProps || {};\n data.domProps.id = props.id;\n }\n return h(props.tag, data, children);\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./src/components/VGrid/index.js\":\n/*!***************************************!*\\\n !*** ./src/components/VGrid/index.js ***!\n \\***************************************/\n/*! exports provided: VContainer, VContent, VFlex, VLayout, VSpacer, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSpacer\", function() { return VSpacer; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VContainer */ \"./src/components/VGrid/VContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContainer\", function() { return _VContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VContent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VContent */ \"./src/components/VGrid/VContent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContent\", function() { return _VContent__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VFlex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VFlex */ \"./src/components/VGrid/VFlex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFlex\", function() { return _VFlex__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VLayout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VLayout */ \"./src/components/VGrid/VLayout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLayout\", function() { return _VLayout__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\nvar VSpacer = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('spacer', 'div', 'v-spacer');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VContainer: _VContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VContent: _VContent__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VFlex: _VFlex__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VLayout: _VLayout__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n VSpacer: VSpacer\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VHover/VHover.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VHover/VHover.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Mixins\n\n\n// Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_delayable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-hover',\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n value: {\n type: Boolean,\n default: undefined\n }\n },\n methods: {\n onMouseEnter: function onMouseEnter() {\n this.runDelay('open');\n },\n onMouseLeave: function onMouseLeave() {\n this.runDelay('close');\n }\n },\n render: function render() {\n if (!this.$scopedSlots.default && this.value === undefined) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-hover is missing a default scopedSlot or bound value', this);\n return null;\n }\n var element;\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({ hover: this.isActive });\n } else if (this.$slots.default && this.$slots.default.length === 1) {\n element = this.$slots.default[0];\n }\n if (Array.isArray(element) && element.length === 1) {\n element = element[0];\n }\n if (!element || Array.isArray(element) || !element.tag) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleWarn\"])('v-hover should only contain a single element', this);\n return element;\n }\n if (!this.disabled) {\n element.data = element.data || {};\n this._g(element.data, {\n mouseenter: this.onMouseEnter,\n mouseleave: this.onMouseLeave\n });\n }\n return element;\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VHover/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VHover/index.ts ***!\n \\****************************************/\n/*! exports provided: VHover, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VHover__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VHover */ \"./src/components/VHover/VHover.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VHover\", function() { return _VHover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VHover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VIcon/VIcon.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VIcon/VIcon.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_icons_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_icons.styl */ \"./src/stylus/components/_icons.styl\");\n/* harmony import */ var _stylus_components_icons_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_icons_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Mixins\n\n\n\n// Util\n\n// Types\n\n\nvar SIZE_MAP;\n(function (SIZE_MAP) {\n SIZE_MAP[\"small\"] = \"16px\";\n SIZE_MAP[\"default\"] = \"24px\";\n SIZE_MAP[\"medium\"] = \"28px\";\n SIZE_MAP[\"large\"] = \"36px\";\n SIZE_MAP[\"xLarge\"] = \"40px\";\n})(SIZE_MAP || (SIZE_MAP = {}));\nfunction isFontAwesome5(iconType) {\n return ['fas', 'far', 'fal', 'fab'].some(function (val) {\n return iconType.includes(val);\n });\n}\nvar VIcon = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-icon',\n props: {\n disabled: Boolean,\n left: Boolean,\n right: Boolean\n },\n methods: {\n getIcon: function getIcon() {\n var iconName = '';\n if (this.$slots.default) iconName = this.$slots.default[0].text.trim();\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"remapInternalIcon\"])(this, iconName);\n },\n getSize: function getSize() {\n var sizes = {\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge\n };\n var explicitSize = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(sizes).find(function (key) {\n return sizes[key];\n });\n return explicitSize && SIZE_MAP[explicitSize] || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.size);\n },\n // Component data for both font and svg icon.\n getDefaultData: function getDefaultData() {\n var data = {\n staticClass: 'v-icon',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.$listeners.click || this.$listeners['!click'],\n 'v-icon--right': this.right\n },\n attrs: __assign({ 'aria-hidden': true }, this.$attrs),\n on: this.$listeners\n };\n return data;\n },\n applyColors: function applyColors(data) {\n data.class = __assign({}, data.class, this.themeClasses);\n this.setTextColor(this.color, data);\n },\n renderFontIcon: function renderFontIcon(icon, h) {\n var newChildren = [];\n var data = this.getDefaultData();\n var iconType = 'material-icons';\n // Material Icon delimiter is _\n // https://material.io/icons/\n var delimiterIndex = icon.indexOf('-');\n var isMaterialIcon = delimiterIndex <= -1;\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon);\n } else {\n iconType = icon.slice(0, delimiterIndex);\n if (isFontAwesome5(iconType)) iconType = '';\n }\n data.class[iconType] = true;\n data.class[icon] = !isMaterialIcon;\n var fontSize = this.getSize();\n if (fontSize) data.style = { fontSize: fontSize };\n this.applyColors(data);\n return h('i', data, newChildren);\n },\n renderSvgIcon: function renderSvgIcon(icon, h) {\n var data = this.getDefaultData();\n data.class['v-icon--is-component'] = true;\n var size = this.getSize();\n if (size) {\n data.style = {\n fontSize: size,\n height: size\n };\n }\n this.applyColors(data);\n var component = icon.component;\n data.props = icon.props;\n data.nativeOn = data.on;\n return h(component, data);\n }\n },\n render: function render(h) {\n var icon = this.getIcon();\n if (typeof icon === 'string') {\n return this.renderFontIcon(icon, h);\n }\n return this.renderSvgIcon(icon, h);\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_5___default.a.extend({\n name: 'v-icon',\n $_wrapperFor: VIcon,\n functional: true,\n render: function render(h, _a) {\n var data = _a.data,\n children = _a.children;\n var iconName = '';\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent || data.domProps.innerHTML || iconName;\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent;\n delete data.domProps.innerHTML;\n }\n return h(VIcon, data, iconName ? [iconName] : children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VIcon/index.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VIcon/index.ts ***!\n \\***************************************/\n/*! exports provided: VIcon, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VIcon */ \"./src/components/VIcon/VIcon.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VIcon\", function() { return _VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VImg/VImg.ts\":\n/*!*************************************!*\\\n !*** ./src/components/VImg/VImg.ts ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_images_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_images.styl */ \"./src/stylus/components/_images.styl\");\n/* harmony import */ var _stylus_components_images_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_images_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VResponsive */ \"./src/components/VResponsive/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n// Components\n\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VResponsive__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-img',\n props: {\n alt: String,\n contain: Boolean,\n src: {\n type: [String, Object],\n default: ''\n },\n gradient: String,\n lazySrc: String,\n srcset: String,\n sizes: String,\n position: {\n type: String,\n default: 'center center'\n },\n transition: {\n type: [Boolean, String],\n default: 'fade-transition'\n }\n },\n data: function data() {\n return {\n currentSrc: '',\n image: null,\n isLoading: true,\n calculatedAspectRatio: undefined\n };\n },\n computed: {\n computedAspectRatio: function computedAspectRatio() {\n return this.normalisedSrc.aspect;\n },\n normalisedSrc: function normalisedSrc() {\n return typeof this.src === 'string' ? {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || this.calculatedAspectRatio)\n } : {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect || this.calculatedAspectRatio)\n };\n },\n __cachedImage: function __cachedImage() {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc)) return [];\n var backgroundImage = [];\n var src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc;\n if (this.gradient) backgroundImage.push(\"linear-gradient(\" + this.gradient + \")\");\n if (src) backgroundImage.push(\"url(\\\"\" + src + \"\\\")\");\n var image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position\n },\n key: +this.isLoading\n });\n if (!this.transition) return image;\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out'\n }\n }, [image]);\n }\n },\n watch: {\n src: function src() {\n if (!this.isLoading) this.init();else this.loadImage();\n },\n '$vuetify.breakpoint.width': 'getSrc'\n },\n mounted: function mounted() {\n this.init();\n },\n methods: {\n init: function init() {\n if (this.normalisedSrc.lazySrc) {\n var lazyImg = new Image();\n lazyImg.src = this.normalisedSrc.lazySrc;\n this.pollForSize(lazyImg, null);\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage();\n },\n onLoad: function onLoad() {\n this.getSrc();\n this.isLoading = false;\n this.$emit('load', this.src);\n },\n onError: function onError() {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleError\"])(\"Image load failed\\n\\n\" + (\"src: \" + this.normalisedSrc.src), this);\n this.$emit('error', this.src);\n },\n getSrc: function getSrc() {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src;\n },\n loadImage: function loadImage() {\n var _this = this;\n var image = new Image();\n this.image = image;\n image.onload = function () {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch(function (err) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleWarn\"])(\"Failed to decode image, trying to render anyway\\n\\n\" + (\"src: \" + _this.normalisedSrc.src) + (err.message ? \"\\nOriginal error: \" + err.message : ''), _this);\n }).then(_this.onLoad);\n } else {\n _this.onLoad();\n }\n };\n image.onerror = this.onError;\n image.src = this.normalisedSrc.src;\n this.sizes && (image.sizes = this.sizes);\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset);\n this.aspectRatio || this.pollForSize(image);\n this.getSrc();\n },\n pollForSize: function pollForSize(img, timeout) {\n var _this = this;\n if (timeout === void 0) {\n timeout = 100;\n }\n var poll = function poll() {\n var naturalHeight = img.naturalHeight,\n naturalWidth = img.naturalWidth;\n if (naturalHeight || naturalWidth) {\n _this.calculatedAspectRatio = naturalWidth / naturalHeight;\n } else {\n timeout != null && setTimeout(poll, timeout);\n }\n };\n poll();\n },\n __genPlaceholder: function __genPlaceholder() {\n if (this.$slots.placeholder) {\n var placeholder = this.isLoading ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder'\n }, this.$slots.placeholder)] : [];\n if (!this.transition) return placeholder[0];\n return this.$createElement('transition', {\n attrs: { name: this.transition }\n }, placeholder);\n }\n }\n },\n render: function render(h) {\n var node = _VResponsive__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.render.call(this, h);\n node.data.staticClass += ' v-image';\n node.data.attrs = {\n role: this.alt ? 'img' : undefined,\n 'aria-label': this.alt\n };\n node.children = [this.__cachedSizer, this.__cachedImage, this.__genPlaceholder(), this.genContent()];\n return h(node.tag, node.data, node.children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VImg/index.ts\":\n/*!**************************************!*\\\n !*** ./src/components/VImg/index.ts ***!\n \\**************************************/\n/*! exports provided: VImg, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VImg */ \"./src/components/VImg/VImg.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VImg\", function() { return _VImg__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VImg__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VInput/VInput.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VInput/VInput.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_inputs_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_inputs.styl */ \"./src/stylus/components/_inputs.styl\");\n/* harmony import */ var _stylus_components_inputs_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_inputs_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VMessages */ \"./src/components/VMessages/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_validatable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/validatable */ \"./src/mixins/validatable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Components\n\n\n\n// Mixins\n\n\n\n// Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_validatable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-input',\n props: {\n appendIcon: String,\n /** @deprecated */\n appendIconCb: Function,\n backgroundColor: {\n type: String,\n default: ''\n },\n height: [Number, String],\n hideDetails: Boolean,\n hint: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n /** @deprecated */\n prependIconCb: Function,\n value: { required: false }\n },\n data: function data() {\n return {\n attrsInput: {},\n lazyValue: this.value,\n hasMouseDown: false\n };\n },\n computed: {\n classes: function classes() {\n return {};\n },\n classesInput: function classesInput() {\n return __assign({}, this.classes, { 'v-input--has-state': this.hasState, 'v-input--hide-details': this.hideDetails, 'v-input--is-label-active': this.isLabelActive, 'v-input--is-dirty': this.isDirty, 'v-input--is-disabled': this.disabled, 'v-input--is-focused': this.isFocused, 'v-input--is-loading': this.loading !== false && this.loading !== undefined, 'v-input--is-readonly': this.readonly }, this.themeClasses);\n },\n directivesInput: function directivesInput() {\n return [];\n },\n hasHint: function hasHint() {\n return !this.hasMessages && this.hint && (this.persistentHint || this.isFocused);\n },\n hasLabel: function hasLabel() {\n return Boolean(this.$slots.label || this.label);\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get: function get() {\n return this.lazyValue;\n },\n set: function set(val) {\n this.lazyValue = val;\n this.$emit(this.$_modelEvent, val);\n }\n },\n isDirty: function isDirty() {\n return !!this.lazyValue;\n },\n isDisabled: function isDisabled() {\n return Boolean(this.disabled || this.readonly);\n },\n isLabelActive: function isLabelActive() {\n return this.isDirty;\n }\n },\n watch: {\n value: function value(val) {\n this.lazyValue = val;\n }\n },\n beforeCreate: function beforeCreate() {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = this.$options.model && this.$options.model.event || 'input';\n },\n methods: {\n genContent: function genContent() {\n return [this.genPrependSlot(), this.genControl(), this.genAppendSlot()];\n },\n genControl: function genControl() {\n return this.$createElement('div', {\n staticClass: 'v-input__control'\n }, [this.genInputSlot(), this.genMessages()]);\n },\n genDefaultSlot: function genDefaultSlot() {\n return [this.genLabel(), this.$slots.default];\n },\n // TODO: remove shouldDeprecate (2.0), used for clearIcon\n genIcon: function genIcon(type, cb, shouldDeprecate) {\n var _this = this;\n if (shouldDeprecate === void 0) {\n shouldDeprecate = true;\n }\n var icon = this[type + \"Icon\"];\n var eventName = \"click:\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"kebabCase\"])(type);\n cb = cb || this[type + \"IconCb\"];\n if (shouldDeprecate && type && cb) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"deprecate\"])(\":\" + type + \"-icon-cb\", \"@\" + eventName, this);\n }\n var data = {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.disabled,\n light: this.light\n },\n on: !(this.$listeners[eventName] || cb) ? undefined : {\n click: function click(e) {\n e.preventDefault();\n e.stopPropagation();\n _this.$emit(eventName, e);\n cb && cb(e);\n },\n // Container has mouseup event that will\n // trigger menu open if enclosed\n mouseup: function mouseup(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n };\n return this.$createElement('div', {\n staticClass: \"v-input__icon v-input__icon--\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"kebabCase\"])(type),\n key: \"\" + type + icon\n }, [this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, icon)]);\n },\n genInputSlot: function genInputSlot() {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.height) },\n directives: this.directivesInput,\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp\n },\n ref: 'input-slot'\n }), [this.genDefaultSlot()]);\n },\n genLabel: function genLabel() {\n if (!this.hasLabel) return null;\n return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n color: this.validationState,\n dark: this.dark,\n focused: this.hasState,\n for: this.$attrs.id,\n light: this.light\n }\n }, this.$slots.label || this.label);\n },\n genMessages: function genMessages() {\n var _this = this;\n if (this.hideDetails) return null;\n var messages = this.hasHint ? [this.hint] : this.validations;\n return this.$createElement(_VMessages__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.hasMessages || this.hasHint ? messages : []\n },\n scopedSlots: {\n default: this.$scopedSlots.message ? function (props) {\n return _this.$scopedSlots.message(props);\n } : undefined\n }\n });\n },\n genSlot: function genSlot(type, location, slot) {\n if (!slot.length) return null;\n var ref = type + \"-\" + location;\n return this.$createElement('div', {\n staticClass: \"v-input__\" + ref,\n ref: ref\n }, slot);\n },\n genPrependSlot: function genPrependSlot() {\n var slot = [];\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend);\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'));\n }\n return this.genSlot('prepend', 'outer', slot);\n },\n genAppendSlot: function genAppendSlot() {\n var slot = [];\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append);\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'));\n }\n return this.genSlot('append', 'outer', slot);\n },\n onClick: function onClick(e) {\n this.$emit('click', e);\n },\n onMouseDown: function onMouseDown(e) {\n this.hasMouseDown = true;\n this.$emit('mousedown', e);\n },\n onMouseUp: function onMouseUp(e) {\n this.hasMouseDown = false;\n this.$emit('mouseup', e);\n }\n },\n render: function render(h) {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n attrs: this.attrsInput,\n 'class': this.classesInput\n }), this.genContent());\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VInput/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VInput/index.ts ***!\n \\****************************************/\n/*! exports provided: VInput, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VInput */ \"./src/components/VInput/VInput.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VInput\", function() { return _VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItem.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VItemGroup/VItem.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Mixins\n\n// Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])('itemGroup', 'v-item', 'v-item-group')\n/* @vue/component */\n).extend({\n name: 'v-item',\n props: {\n value: {\n required: false\n }\n },\n render: function render() {\n var _a;\n if (!this.$scopedSlots.default) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleWarn\"])('v-item is missing a default scopedSlot', this);\n return null;\n }\n var element;\n /* istanbul ignore else */\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle\n });\n }\n if (Array.isArray(element) && element.length === 1) {\n element = element[0];\n }\n if (!element || Array.isArray(element) || !element.tag) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleWarn\"])('v-item should only contain a single element', this);\n return element;\n }\n element.data = this._b(element.data || {}, element.tag, {\n class: (_a = {}, _a[this.activeClass] = this.isActive, _a)\n });\n return element;\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/VItemGroup.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VItemGroup/VItemGroup.ts ***!\n \\*************************************************/\n/*! exports provided: BaseItemGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseItemGroup\", function() { return BaseItemGroup; });\n/* harmony import */ var _stylus_components_item_group_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_item-group.styl */ \"./src/stylus/components/_item-group.styl\");\n/* harmony import */ var _stylus_components_item_group_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_item_group_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_proxyable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/proxyable */ \"./src/mixins/proxyable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n\n\n// Utilities\n\n\nvar BaseItemGroup = Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_proxyable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n name: 'base-item-group',\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active'\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null\n },\n multiple: Boolean\n },\n data: function data() {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n items: []\n };\n },\n computed: {\n classes: function classes() {\n return __assign({}, this.themeClasses);\n },\n selectedItems: function selectedItems() {\n var _this = this;\n return this.items.filter(function (item, index) {\n return _this.toggleMethod(_this.getValue(item, index));\n });\n },\n selectedValues: function selectedValues() {\n return Array.isArray(this.internalValue) ? this.internalValue : [this.internalValue];\n },\n toggleMethod: function toggleMethod() {\n var _this = this;\n if (!this.multiple) {\n return function (v) {\n return _this.internalValue === v;\n };\n }\n var internalValue = this.internalValue;\n if (Array.isArray(internalValue)) {\n return function (v) {\n return internalValue.includes(v);\n };\n }\n return function () {\n return false;\n };\n }\n },\n watch: {\n internalValue: function internalValue() {\n // https://github.com/vuetifyjs/vuetify/issues/5352\n this.$nextTick(this.updateItemsState);\n }\n },\n created: function created() {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"consoleWarn\"])('Model must be bound to an array if the multiple property is true.', this);\n }\n },\n methods: {\n getValue: function getValue(item, i) {\n return item.value == null || item.value === '' ? i : item.value;\n },\n onClick: function onClick(item, index) {\n this.updateInternalValue(this.getValue(item, index));\n },\n register: function register(item) {\n var _this = this;\n var index = this.items.push(item) - 1;\n item.$on('change', function () {\n return _this.onClick(item, index);\n });\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && this.internalLazyValue == null) {\n this.updateMandatory();\n }\n this.updateItem(item, index);\n },\n unregister: function unregister(item) {\n if (this._isDestroyed) return;\n var index = this.items.indexOf(item);\n var value = this.getValue(item, index);\n this.items.splice(index, 1);\n var valueIndex = this.selectedValues.indexOf(value);\n // Items is not selected, do nothing\n if (valueIndex < 0) return;\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value);\n }\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(function (v) {\n return v !== value;\n });\n } else {\n this.internalValue = undefined;\n }\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true);\n }\n },\n updateItem: function updateItem(item, index) {\n var value = this.getValue(item, index);\n item.isActive = this.toggleMethod(value);\n },\n updateItemsState: function updateItemsState() {\n if (this.mandatory && !this.selectedItems.length) {\n return this.updateMandatory();\n }\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem);\n },\n updateInternalValue: function updateInternalValue(value) {\n this.multiple ? this.updateMultiple(value) : this.updateSingle(value);\n },\n updateMandatory: function updateMandatory(last) {\n if (!this.items.length) return;\n var index = last ? this.items.length - 1 : 0;\n this.updateInternalValue(this.getValue(this.items[index], index));\n },\n updateMultiple: function updateMultiple(value) {\n var defaultValue = Array.isArray(this.internalValue) ? this.internalValue : [];\n var internalValue = defaultValue.slice();\n var index = internalValue.findIndex(function (val) {\n return val === value;\n });\n if (this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1) return;\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max) return;\n index > -1 ? internalValue.splice(index, 1) : internalValue.push(value);\n this.internalValue = internalValue;\n },\n updateSingle: function updateSingle(value) {\n var isSame = value === this.internalValue;\n if (this.mandatory && isSame) return;\n this.internalValue = isSame ? undefined : value;\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-item-group',\n class: this.classes\n }, this.$slots.default);\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseItemGroup.extend({\n name: 'v-item-group',\n provide: function provide() {\n return {\n itemGroup: this\n };\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VItemGroup/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VItemGroup/index.ts ***!\n \\********************************************/\n/*! exports provided: VItem, VItemGroup, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VItem */ \"./src/components/VItemGroup/VItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItem\", function() { return _VItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItemGroup\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VItem: _VItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VItemGroup: _VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VJumbotron/VJumbotron.js\":\n/*!*************************************************!*\\\n !*** ./src/components/VJumbotron/VJumbotron.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_jumbotrons_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_jumbotrons.styl */ \"./src/stylus/components/_jumbotrons.styl\");\n/* harmony import */ var _stylus_components_jumbotrons_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_jumbotrons_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n// Mixins\n\n\n\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-jumbotron',\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n props: {\n gradient: String,\n height: {\n type: [Number, String],\n default: '400px'\n },\n src: String,\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n backgroundStyles: function backgroundStyles() {\n var styles = {};\n if (this.gradient) {\n styles.background = \"linear-gradient(\" + this.gradient + \")\";\n }\n return styles;\n },\n classes: function classes() {\n return this.themeClasses;\n },\n styles: function styles() {\n return {\n height: this.height\n };\n }\n },\n mounted: function mounted() {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"deprecate\"])('v-jumbotron', this.src ? 'v-img' : 'v-responsive', this);\n },\n methods: {\n genBackground: function genBackground() {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-jumbotron__background',\n style: this.backgroundStyles\n }));\n },\n genContent: function genContent() {\n return this.$createElement('div', {\n staticClass: 'v-jumbotron__content'\n }, this.$slots.default);\n },\n genImage: function genImage() {\n if (!this.src) return null;\n if (this.$slots.img) return this.$slots.img({ src: this.src });\n return this.$createElement('img', {\n staticClass: 'v-jumbotron__image',\n attrs: { src: this.src }\n });\n },\n genWrapper: function genWrapper() {\n return this.$createElement('div', {\n staticClass: 'v-jumbotron__wrapper'\n }, [this.genImage(), this.genBackground(), this.genContent()]);\n }\n },\n render: function render(h) {\n var _a = this.generateRouteLink(this.classes),\n tag = _a.tag,\n data = _a.data;\n data.staticClass = 'v-jumbotron';\n data.style = this.styles;\n return h(tag, data, [this.genWrapper()]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VJumbotron/index.js\":\n/*!********************************************!*\\\n !*** ./src/components/VJumbotron/index.js ***!\n \\********************************************/\n/*! exports provided: VJumbotron, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VJumbotron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VJumbotron */ \"./src/components/VJumbotron/VJumbotron.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VJumbotron\", function() { return _VJumbotron__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VJumbotron__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VLabel/VLabel.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VLabel/VLabel.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_labels_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_labels.styl */ \"./src/stylus/components/_labels.styl\");\n/* harmony import */ var _stylus_components_labels_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_labels_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n\n// Helpers\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n name: 'v-label',\n functional: true,\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary'\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0\n },\n right: {\n type: [Number, String],\n default: 'auto'\n },\n value: Boolean\n },\n render: function render(h, ctx) {\n var children = ctx.children,\n listeners = ctx.listeners,\n props = ctx.props;\n var data = {\n staticClass: 'v-label',\n 'class': __assign({ 'v-label--active': props.value, 'v-label--is-disabled': props.disabled }, Object(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"functionalThemeClasses\"])(ctx)),\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for\n },\n on: listeners,\n style: {\n left: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(props.left),\n right: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(props.right),\n position: props.absolute ? 'absolute' : 'relative'\n }\n };\n return h('label', _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.setTextColor(props.focused && props.color, data), children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VLabel/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VLabel/index.ts ***!\n \\****************************************/\n/*! exports provided: VLabel, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VLabel */ \"./src/components/VLabel/VLabel.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLabel\", function() { return _VLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VList/VList.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VList/VList.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_lists_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_lists.styl */ \"./src/stylus/components/_lists.styl\");\n/* harmony import */ var _stylus_components_lists_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_lists_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = undefined && undefined.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\n// Styles\n\n// Mixins\n\n\n// Types\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"provide\"])('list'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-list',\n provide: function provide() {\n return {\n listClick: this.listClick\n };\n },\n props: {\n dense: Boolean,\n expand: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean\n },\n data: function data() {\n return {\n groups: []\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-list--dense': this.dense, 'v-list--subheader': this.subheader, 'v-list--two-line': this.twoLine, 'v-list--three-line': this.threeLine }, this.themeClasses);\n }\n },\n methods: {\n register: function register(content) {\n this.groups.push(content);\n },\n unregister: function unregister(content) {\n var index = this.groups.findIndex(function (g) {\n return g._uid === content._uid;\n });\n if (index > -1) this.groups.splice(index, 1);\n },\n listClick: function listClick(uid) {\n var e_1, _a;\n if (this.expand) return;\n try {\n for (var _b = __values(this.groups), _c = _b.next(); !_c.done; _c = _b.next()) {\n var group = _c.value;\n group.toggle(uid);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n },\n render: function render(h) {\n var data = {\n staticClass: 'v-list',\n class: this.classes,\n attrs: {\n role: 'list'\n }\n };\n return h('div', data, [this.$slots.default]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListGroup.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VList/VListGroup.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Components\n\n// Mixins\n\n\n\n// Transitions\n\n// Utils\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_bootable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"inject\"])('list', 'v-list-group', 'v-list'), _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-list-group',\n inject: ['listClick'],\n props: {\n activeClass: {\n type: String,\n default: 'primary--text'\n },\n appendIcon: {\n type: String,\n default: '$vuetify.icons.expand'\n },\n disabled: Boolean,\n group: String,\n noAction: Boolean,\n prependIcon: String,\n subGroup: Boolean\n },\n data: function data() {\n return {\n groups: []\n };\n },\n computed: {\n groupClasses: function groupClasses() {\n return {\n 'v-list__group--active': this.isActive,\n 'v-list__group--disabled': this.disabled\n };\n },\n headerClasses: function headerClasses() {\n return {\n 'v-list__group__header--active': this.isActive,\n 'v-list__group__header--sub-group': this.subGroup\n };\n },\n itemsClasses: function itemsClasses() {\n return {\n 'v-list__group__items--no-action': this.noAction\n };\n }\n },\n watch: {\n isActive: function isActive(val) {\n if (!this.subGroup && val) {\n this.listClick(this._uid);\n }\n },\n $route: function $route(to) {\n var isActive = this.matchRoute(to.path);\n if (this.group) {\n if (isActive && this.isActive !== isActive) {\n this.listClick(this._uid);\n }\n this.isActive = isActive;\n }\n }\n },\n mounted: function mounted() {\n this.list.register(this);\n if (this.group && this.$route && this.value == null) {\n this.isActive = this.matchRoute(this.$route.path);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.list.unregister(this._uid);\n },\n methods: {\n click: function click(e) {\n if (this.disabled) return;\n this.$emit('click', e);\n this.isActive = !this.isActive;\n },\n genIcon: function genIcon(icon) {\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], icon);\n },\n genAppendIcon: function genAppendIcon() {\n var icon = !this.subGroup ? this.appendIcon : false;\n if (!icon && !this.$slots.appendIcon) return null;\n return this.$createElement('div', {\n staticClass: 'v-list__group__header__append-icon'\n }, [this.$slots.appendIcon || this.genIcon(icon)]);\n },\n genGroup: function genGroup() {\n return this.$createElement('div', {\n staticClass: 'v-list__group__header',\n class: this.headerClasses,\n on: __assign({}, this.$listeners, { click: this.click }),\n ref: 'item'\n }, [this.genPrependIcon(), this.$slots.activator, this.genAppendIcon()]);\n },\n genItems: function genItems() {\n return this.$createElement('div', {\n staticClass: 'v-list__group__items',\n class: this.itemsClasses,\n directives: [{\n name: 'show',\n value: this.isActive\n }],\n ref: 'group'\n }, this.showLazyContent(this.$slots.default));\n },\n genPrependIcon: function genPrependIcon() {\n var _a;\n var icon = this.prependIcon ? this.prependIcon : this.subGroup ? '$vuetify.icons.subgroup' : false;\n if (!icon && !this.$slots.prependIcon) return null;\n return this.$createElement('div', {\n staticClass: 'v-list__group__header__prepend-icon',\n 'class': (_a = {}, _a[this.activeClass] = this.isActive, _a)\n }, [this.$slots.prependIcon || this.genIcon(icon)]);\n },\n toggle: function toggle(uid) {\n this.isActive = this._uid === uid;\n },\n matchRoute: function matchRoute(to) {\n if (!this.group) return false;\n return to.match(this.group) !== null;\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-list__group',\n class: this.groupClasses\n }, [this.genGroup(), h(_transitions__WEBPACK_IMPORTED_MODULE_4__[\"VExpandTransition\"], [this.genItems()])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListTile.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VList/VListTile.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Mixins\n\n\n\n\n// Directives\n\n// Types\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _mixins_routable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n name: 'v-list-tile',\n directives: {\n Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n inheritAttrs: false,\n props: {\n activeClass: {\n type: String,\n default: 'primary--text'\n },\n avatar: Boolean,\n inactive: Boolean,\n tag: String\n },\n data: function data() {\n return {\n proxyClass: 'v-list__tile--active'\n };\n },\n computed: {\n listClasses: function listClasses() {\n return this.disabled ? { 'v-list--disabled': true } : undefined;\n },\n classes: function classes() {\n var _a;\n return __assign({ 'v-list__tile': true, 'v-list__tile--link': this.isLink && !this.inactive, 'v-list__tile--avatar': this.avatar, 'v-list__tile--disabled': this.disabled, 'v-list__tile--active': !this.to && this.isActive }, this.themeClasses, (_a = {}, _a[this.activeClass] = this.isActive, _a));\n },\n isLink: function isLink() {\n var hasClick = this.$listeners && (this.$listeners.click || this.$listeners['!click']);\n return Boolean(this.href || this.to || hasClick);\n }\n },\n render: function render(h) {\n var isRouteLink = !this.inactive && this.isLink;\n var _a = isRouteLink ? this.generateRouteLink(this.classes) : {\n tag: this.tag || 'div',\n data: {\n class: this.classes\n }\n },\n tag = _a.tag,\n data = _a.data;\n data.attrs = Object.assign({}, data.attrs, this.$attrs);\n return h('div', this.setTextColor(!this.disabled && this.isActive && this.color, {\n class: this.listClasses,\n attrs: {\n disabled: this.disabled,\n role: 'listitem'\n }\n }), [h(tag, data, this.$slots.default)]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListTileAction.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VList/VListTileAction.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n// Types\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'v-list-tile-action',\n functional: true,\n render: function render(h, _a) {\n var data = _a.data,\n _b = _a.children,\n children = _b === void 0 ? [] : _b;\n data.staticClass = data.staticClass ? \"v-list__tile__action \" + data.staticClass : 'v-list__tile__action';\n var filteredChild = children.filter(function (VNode) {\n return VNode.isComment === false && VNode.text !== ' ';\n });\n if (filteredChild.length > 1) data.staticClass += ' v-list__tile__action--stack';\n return h('div', data, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/VListTileAvatar.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VList/VListTileAvatar.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VAvatar */ \"./src/components/VAvatar/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Components\n\n// Types\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n name: 'v-list-tile-avatar',\n functional: true,\n props: {\n color: String,\n size: {\n type: [Number, String],\n default: 40\n },\n tile: Boolean\n },\n render: function render(h, _a) {\n var data = _a.data,\n children = _a.children,\n props = _a.props;\n data.staticClass = (\"v-list__tile__avatar \" + (data.staticClass || '')).trim();\n var avatar = h(_VAvatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n props: {\n color: props.color,\n size: props.size,\n tile: props.tile\n }\n }, [children]);\n return h('div', data, [avatar]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VList/index.ts\":\n/*!***************************************!*\\\n !*** ./src/components/VList/index.ts ***!\n \\***************************************/\n/*! exports provided: VList, VListGroup, VListTile, VListTileAction, VListTileAvatar, VListTileActionText, VListTileContent, VListTileTitle, VListTileSubTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListTileActionText\", function() { return VListTileActionText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListTileContent\", function() { return VListTileContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListTileTitle\", function() { return VListTileTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VListTileSubTitle\", function() { return VListTileSubTitle; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VList */ \"./src/components/VList/VList.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VList\", function() { return _VList__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VListGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VListGroup */ \"./src/components/VList/VListGroup.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListGroup\", function() { return _VListGroup__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VListTile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VListTile */ \"./src/components/VList/VListTile.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTile\", function() { return _VListTile__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VListTileAction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VListTileAction */ \"./src/components/VList/VListTileAction.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileAction\", function() { return _VListTileAction__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _VListTileAvatar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VListTileAvatar */ \"./src/components/VList/VListTileAvatar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileAvatar\", function() { return _VListTileAvatar__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\nvar VListTileActionText = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list__tile__action-text', 'span');\nvar VListTileContent = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list__tile__content', 'div');\nvar VListTileTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list__tile__title', 'div');\nvar VListTileSubTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-list__tile__sub-title', 'div');\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VList: _VList__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VListGroup: _VListGroup__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VListTile: _VListTile__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VListTileAction: _VListTileAction__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n VListTileActionText: VListTileActionText,\n VListTileAvatar: _VListTileAvatar__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n VListTileContent: VListTileContent,\n VListTileSubTitle: VListTileSubTitle,\n VListTileTitle: VListTileTitle\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/VMenu.js\":\n/*!***************************************!*\\\n !*** ./src/components/VMenu/VMenu.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_menus_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_menus.styl */ \"./src/stylus/components/_menus.styl\");\n/* harmony import */ var _stylus_components_menus_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_menus_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent.ts\");\n/* harmony import */ var _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/detachable */ \"./src/mixins/detachable.js\");\n/* harmony import */ var _mixins_menuable_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/menuable.js */ \"./src/mixins/menuable.js\");\n/* harmony import */ var _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/returnable */ \"./src/mixins/returnable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_menu_activator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./mixins/menu-activator */ \"./src/components/VMenu/mixins/menu-activator.js\");\n/* harmony import */ var _mixins_menu_generators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./mixins/menu-generators */ \"./src/components/VMenu/mixins/menu-generators.js\");\n/* harmony import */ var _mixins_menu_keyable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mixins/menu-keyable */ \"./src/components/VMenu/mixins/menu-keyable.js\");\n/* harmony import */ var _mixins_menu_position__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./mixins/menu-position */ \"./src/components/VMenu/mixins/menu-position.js\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_ThemeProvider__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/ThemeProvider */ \"./src/util/ThemeProvider.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n\n// Mixins\n\n\n\n\n\n\n\n// Component level mixins\n\n\n\n\n// Directives\n\n\n// Helpers\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n name: 'v-menu',\n provide: function provide() {\n return {\n // Pass theme through to default slot\n theme: this.theme\n };\n },\n directives: {\n ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n },\n mixins: [_mixins_menu_activator__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_menu_generators__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _mixins_menu_keyable__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _mixins_menuable_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_menu_position__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _mixins_returnable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_8__[\"default\"]],\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true\n },\n closeOnContentClick: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n fullWidth: Boolean,\n maxHeight: { default: 'auto' },\n openOnClick: {\n type: Boolean,\n default: true\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left'\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition'\n }\n },\n data: function data() {\n return {\n defaultOffset: 8,\n hasJustFocused: false,\n resizeTimeout: null\n };\n },\n computed: {\n calculatedLeft: function calculatedLeft() {\n var menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth));\n if (!this.auto) return this.calcLeft(menuWidth);\n return this.calcXOverflow(this.calcLeftAuto(), menuWidth) + \"px\";\n },\n calculatedMaxHeight: function calculatedMaxHeight() {\n return this.auto ? '200px' : Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"convertToUnit\"])(this.maxHeight);\n },\n calculatedMaxWidth: function calculatedMaxWidth() {\n return isNaN(this.maxWidth) ? this.maxWidth : this.maxWidth + \"px\";\n },\n calculatedMinWidth: function calculatedMinWidth() {\n if (this.minWidth) {\n return isNaN(this.minWidth) ? this.minWidth : this.minWidth + \"px\";\n }\n var minWidth = Math.min(this.dimensions.activator.width + this.nudgeWidth + (this.auto ? 16 : 0), Math.max(this.pageWidth - 24, 0));\n var calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth)) ? minWidth : parseInt(this.calculatedMaxWidth);\n return Math.min(calculatedMaxWidth, minWidth) + \"px\";\n },\n calculatedTop: function calculatedTop() {\n if (!this.auto || this.isAttached) return this.calcTop();\n return this.calcYOverflow(this.calculatedTopAuto) + \"px\";\n },\n styles: function styles() {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex\n };\n }\n },\n watch: {\n activator: function activator(newActivator, oldActivator) {\n this.removeActivatorEvents(oldActivator);\n this.addActivatorEvents(newActivator);\n },\n disabled: function disabled(_disabled) {\n if (!this.activator) return;\n if (_disabled) {\n this.removeActivatorEvents(this.activator);\n } else {\n this.addActivatorEvents(this.activator);\n }\n },\n isContentActive: function isContentActive(val) {\n this.hasJustFocused = val;\n }\n },\n mounted: function mounted() {\n this.isActive && this.activate();\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_15__[\"getSlotType\"])(this, 'activator', true) === 'v-slot') {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_17__[\"consoleError\"])(\"v-tooltip's activator slot must be bound, try '<template #activator=\\\"data\\\"><v-btn v-on=\\\"data.on>'\", this);\n }\n },\n methods: {\n activate: function activate() {\n var _this = this;\n // This exists primarily for v-select\n // helps determine which tiles to activate\n this.getTiles();\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions();\n // Start the transition\n requestAnimationFrame(function () {\n // Once transitioning, calculate scroll and top position\n _this.startTransition().then(function () {\n if (_this.$refs.content) {\n _this.calculatedTopAuto = _this.calcTopAuto();\n _this.auto && (_this.$refs.content.scrollTop = _this.calcScrollPosition());\n }\n });\n });\n },\n closeConditional: function closeConditional(e) {\n return this.isActive && !this._isDestroyed && this.closeOnClick && !this.$refs.content.contains(e.target);\n },\n onResize: function onResize() {\n if (!this.isActive) return;\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth;\n this.updateDimensions();\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(this.updateDimensions, 100);\n }\n },\n render: function render(h) {\n var data = {\n staticClass: 'v-menu',\n class: { 'v-menu--inline': !this.fullWidth && this.$slots.activator },\n directives: [{\n arg: 500,\n name: 'resize',\n value: this.onResize\n }],\n on: this.disableKeys ? undefined : {\n keydown: this.onKeyDown\n }\n };\n return h('div', data, [this.genActivator(), this.$createElement(_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n props: {\n root: true,\n light: this.light,\n dark: this.dark\n }\n }, [this.genTransition()])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/index.js\":\n/*!***************************************!*\\\n !*** ./src/components/VMenu/index.js ***!\n \\***************************************/\n/*! exports provided: VMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMenu */ \"./src/components/VMenu/VMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenu\", function() { return _VMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/mixins/menu-activator.js\":\n/*!*******************************************************!*\\\n !*** ./src/components/VMenu/mixins/menu-activator.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Menu activator\n *\n * @mixin\n *\n * Handles the click and hover activation\n * Supports slotted and detached activators\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n activatorClickHandler: function activatorClickHandler(e) {\n if (this.openOnClick && !this.isActive) {\n this.getActivator(e).focus();\n this.isActive = true;\n this.absoluteX = e.clientX;\n this.absoluteY = e.clientY;\n } else if (this.closeOnClick && this.isActive) {\n this.getActivator(e).blur();\n this.isActive = false;\n }\n },\n mouseEnterHandler: function mouseEnterHandler() {\n var _this = this;\n this.runDelay('open', function () {\n if (_this.hasJustFocused) return;\n _this.hasJustFocused = true;\n _this.isActive = true;\n });\n },\n mouseLeaveHandler: function mouseLeaveHandler(e) {\n var _this = this;\n // Prevent accidental re-activation\n this.runDelay('close', function () {\n if (_this.$refs.content.contains(e.relatedTarget)) return;\n requestAnimationFrame(function () {\n _this.isActive = false;\n _this.callDeactivate();\n });\n });\n },\n addActivatorEvents: function addActivatorEvents(activator) {\n if (activator === void 0) {\n activator = null;\n }\n if (!activator || this.disabled) return;\n activator.addEventListener('click', this.activatorClickHandler);\n },\n removeActivatorEvents: function removeActivatorEvents(activator) {\n if (activator === void 0) {\n activator = null;\n }\n if (!activator) return;\n activator.removeEventListener('click', this.activatorClickHandler);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/mixins/menu-generators.js\":\n/*!********************************************************!*\\\n !*** ./src/components/VMenu/mixins/menu-generators.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n genActivator: function genActivator() {\n if (!this.$slots.activator && !this.$scopedSlots.activator) return null;\n var listeners = {};\n if (!this.disabled) {\n if (this.openOnHover) {\n listeners.mouseenter = this.mouseEnterHandler;\n listeners.mouseleave = this.mouseLeaveHandler;\n } else if (this.openOnClick) {\n listeners.click = this.activatorClickHandler;\n }\n }\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getSlotType\"])(this, 'activator') === 'scoped') {\n listeners.keydown = this.onKeyDown;\n var activator = this.$scopedSlots.activator({ on: listeners });\n this.activatorNode = activator;\n return activator;\n }\n return this.$createElement('div', {\n staticClass: 'v-menu__activator',\n 'class': {\n 'v-menu__activator--active': this.hasJustFocused || this.isActive,\n 'v-menu__activator--disabled': this.disabled\n },\n ref: 'activator',\n on: listeners\n }, this.$slots.activator);\n },\n genTransition: function genTransition() {\n if (!this.transition) return this.genContent();\n return this.$createElement('transition', {\n props: {\n name: this.transition\n }\n }, [this.genContent()]);\n },\n genDirectives: function genDirectives() {\n var _this = this;\n // Do not add click outside for hover menu\n var directives = !this.openOnHover && this.closeOnClick ? [{\n name: 'click-outside',\n value: function value() {\n _this.isActive = false;\n },\n args: {\n closeConditional: this.closeConditional,\n include: function include() {\n return __spread([_this.$el], _this.getOpenDependentElements());\n }\n }\n }] : [];\n directives.push({\n name: 'show',\n value: this.isContentActive\n });\n return directives;\n },\n genContent: function genContent() {\n var _this = this;\n var _a;\n var options = {\n attrs: this.getScopeIdAttrs(),\n staticClass: 'v-menu__content',\n 'class': __assign({}, this.rootThemeClasses, (_a = { 'v-menu__content--auto': this.auto, 'v-menu__content--fixed': this.activatorFixed, 'menuable__content__active': this.isActive }, _a[this.contentClass.trim()] = true, _a)),\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: function click(e) {\n e.stopPropagation();\n if (e.target.getAttribute('disabled')) return;\n if (_this.closeOnContentClick) _this.isActive = false;\n },\n keydown: this.onKeyDown\n }\n };\n !this.disabled && this.openOnHover && (options.on.mouseenter = this.mouseEnterHandler);\n this.openOnHover && (options.on.mouseleave = this.mouseLeaveHandler);\n return this.$createElement('div', options, this.showLazyContent(this.$slots.default));\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/mixins/menu-keyable.js\":\n/*!*****************************************************!*\\\n !*** ./src/components/VMenu/mixins/menu-keyable.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\n/**\n * Menu keyable\n *\n * @mixin\n *\n * Primarily used to support VSelect\n * Handles opening and closing of VMenu from keystrokes\n * Will conditionally highlight VListTiles for VSelect\n */\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n disableKeys: Boolean\n },\n data: function data() {\n return {\n listIndex: -1,\n tiles: []\n };\n },\n watch: {\n isActive: function isActive(val) {\n if (!val) this.listIndex = -1;\n },\n listIndex: function listIndex(next, prev) {\n if (next in this.tiles) {\n var tile = this.tiles[next];\n tile.classList.add('v-list__tile--highlighted');\n this.$refs.content.scrollTop = tile.offsetTop - tile.clientHeight;\n }\n prev in this.tiles && this.tiles[prev].classList.remove('v-list__tile--highlighted');\n }\n },\n methods: {\n onKeyDown: function onKeyDown(e) {\n var _this = this;\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keyCodes\"].esc) {\n // Wait for dependent elements to close first\n setTimeout(function () {\n _this.isActive = false;\n });\n var activator_1 = this.getActivator();\n this.$nextTick(function () {\n return activator_1 && activator_1.focus();\n });\n } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keyCodes\"].tab) {\n setTimeout(function () {\n if (!_this.$refs.content.contains(document.activeElement)) {\n _this.isActive = false;\n }\n });\n } else {\n this.changeListIndex(e);\n }\n },\n changeListIndex: function changeListIndex(e) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles();\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keyCodes\"].down && this.listIndex < this.tiles.length - 1) {\n this.listIndex++;\n // Allow user to set listIndex to -1 so\n // that the list can be un-highlighted\n } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keyCodes\"].up && this.listIndex > -1) {\n this.listIndex--;\n } else if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keyCodes\"].enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click();\n } else {\n return;\n }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault();\n },\n getTiles: function getTiles() {\n this.tiles = this.$refs.content.querySelectorAll('.v-list__tile');\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMenu/mixins/menu-position.js\":\n/*!******************************************************!*\\\n !*** ./src/components/VMenu/mixins/menu-position.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Menu position\n *\n * @mixin\n *\n * Used for calculating an automatic position (used for VSelect)\n * Will position the VMenu content properly over the VSelect\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n calculatedTopAuto: 0\n };\n },\n methods: {\n calcScrollPosition: function calcScrollPosition() {\n var $el = this.$refs.content;\n var activeTile = $el.querySelector('.v-list__tile--active');\n var maxScrollTop = $el.scrollHeight - $el.offsetHeight;\n return activeTile ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2)) : $el.scrollTop;\n },\n calcLeftAuto: function calcLeftAuto() {\n if (this.isAttached) return 0;\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2);\n },\n calcTopAuto: function calcTopAuto() {\n var $el = this.$refs.content;\n var activeTile = $el.querySelector('.v-list__tile--active');\n if (!activeTile) {\n this.selectedIndex = null;\n }\n if (this.offsetY || !activeTile) {\n return this.computedTop;\n }\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile);\n var tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition();\n var firstTileOffsetTop = $el.querySelector('.v-list__tile').offsetTop;\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VMessages/VMessages.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VMessages/VMessages.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_messages_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_messages.styl */ \"./src/stylus/components/_messages.styl\");\n/* harmony import */ var _stylus_components_messages_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_messages_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n\n// Mixins\n\n\n\n// Utilities\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).extend({\n name: 'v-messages',\n props: {\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n methods: {\n genChildren: function genChildren() {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div'\n }\n }, this.value.map(this.genMessage));\n },\n genMessage: function genMessage(message, key) {\n var slot = this.$scopedSlots.default ? this.$scopedSlots.default({ message: message, key: key }) : undefined;\n var escapedHTML = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"escapeHTML\"])(message);\n var innerHTML = !slot ? escapedHTML : undefined;\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key: key,\n domProps: { innerHTML: innerHTML }\n }, slot);\n }\n },\n render: function render(h) {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses\n }), [this.genChildren()]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VMessages/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VMessages/index.ts ***!\n \\*******************************************/\n/*! exports provided: VMessages, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VMessages */ \"./src/components/VMessages/VMessages.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMessages\", function() { return _VMessages__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VMessages__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VNavigationDrawer/VNavigationDrawer.ts\":\n/*!***************************************************************!*\\\n !*** ./src/components/VNavigationDrawer/VNavigationDrawer.ts ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_navigation_drawer_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_navigation-drawer.styl */ \"./src/stylus/components/_navigation-drawer.styl\");\n/* harmony import */ var _stylus_components_navigation_drawer_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_navigation_drawer_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent.ts\");\n/* harmony import */ var _mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/overlayable */ \"./src/mixins/overlayable.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n\n\n\n// Directives\n\n\n\n// Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('left', ['miniVariant', 'right', 'width']), _mixins_dependent__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-navigation-drawer',\n directives: {\n ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n },\n props: {\n clipped: Boolean,\n disableRouteWatcher: Boolean,\n disableResizeWatcher: Boolean,\n height: {\n type: [Number, String],\n default: '100%'\n },\n floating: Boolean,\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 80\n },\n mobileBreakPoint: {\n type: [Number, String],\n default: 1264\n },\n permanent: Boolean,\n right: Boolean,\n stateless: Boolean,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 300\n },\n value: { required: false }\n },\n data: function data() {\n return {\n isActive: false,\n touchArea: {\n left: 0,\n right: 0\n }\n };\n },\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty: function applicationProperty() {\n return this.right ? 'right' : 'left';\n },\n calculatedTransform: function calculatedTransform() {\n if (this.isActive) return 0;\n return this.right ? this.calculatedWidth : -this.calculatedWidth;\n },\n calculatedWidth: function calculatedWidth() {\n return parseInt(this.miniVariant ? this.miniVariantWidth : this.width);\n },\n classes: function classes() {\n return __assign({ 'v-navigation-drawer': true, 'v-navigation-drawer--absolute': this.absolute, 'v-navigation-drawer--clipped': this.clipped, 'v-navigation-drawer--close': !this.isActive, 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed), 'v-navigation-drawer--floating': this.floating, 'v-navigation-drawer--is-mobile': this.isMobile, 'v-navigation-drawer--mini-variant': this.miniVariant, 'v-navigation-drawer--open': this.isActive, 'v-navigation-drawer--right': this.right, 'v-navigation-drawer--temporary': this.temporary }, this.themeClasses);\n },\n hasApp: function hasApp() {\n return this.app && !this.isMobile && !this.temporary;\n },\n isMobile: function isMobile() {\n return !this.stateless && !this.permanent && !this.temporary && this.$vuetify.breakpoint.width < parseInt(this.mobileBreakPoint, 10);\n },\n marginTop: function marginTop() {\n if (!this.hasApp) return 0;\n var marginTop = this.$vuetify.application.bar;\n marginTop += this.clipped ? this.$vuetify.application.top : 0;\n return marginTop;\n },\n maxHeight: function maxHeight() {\n if (!this.hasApp) return null;\n var maxHeight = this.$vuetify.application.bottom + this.$vuetify.application.footer + this.$vuetify.application.bar;\n if (!this.clipped) return maxHeight;\n return maxHeight + this.$vuetify.application.top;\n },\n reactsToClick: function reactsToClick() {\n return !this.stateless && !this.permanent && (this.isMobile || this.temporary);\n },\n reactsToMobile: function reactsToMobile() {\n return !this.disableResizeWatcher && !this.stateless && !this.permanent && !this.temporary;\n },\n reactsToRoute: function reactsToRoute() {\n return !this.disableRouteWatcher && !this.stateless && (this.temporary || this.isMobile);\n },\n resizeIsDisabled: function resizeIsDisabled() {\n return this.disableResizeWatcher || this.stateless;\n },\n showOverlay: function showOverlay() {\n return this.isActive && (this.isMobile || this.temporary);\n },\n styles: function styles() {\n var styles = {\n height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"convertToUnit\"])(this.height),\n marginTop: this.marginTop + \"px\",\n maxHeight: this.maxHeight != null ? \"calc(100% - \" + +this.maxHeight + \"px)\" : undefined,\n transform: \"translateX(\" + this.calculatedTransform + \"px)\",\n width: this.calculatedWidth + \"px\"\n };\n return styles;\n }\n },\n watch: {\n $route: function $route() {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false;\n }\n },\n isActive: function isActive(val) {\n this.$emit('input', val);\n this.callUpdate();\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile: function isMobile(val, prev) {\n !val && this.isActive && !this.temporary && this.removeOverlay();\n if (prev == null || this.resizeIsDisabled || !this.reactsToMobile) return;\n this.isActive = !val;\n this.callUpdate();\n },\n permanent: function permanent(val) {\n // If enabling prop enable the drawer\n if (val) {\n this.isActive = true;\n }\n this.callUpdate();\n },\n showOverlay: function showOverlay(val) {\n if (val) this.genOverlay();else this.removeOverlay();\n },\n temporary: function temporary() {\n this.callUpdate();\n },\n value: function value(val) {\n if (this.permanent) return;\n // TODO: referring to this directly causes type errors\n // all over the place for some reason\n var _this = this;\n if (val == null) return _this.init();\n if (val !== this.isActive) this.isActive = val;\n }\n },\n beforeMount: function beforeMount() {\n this.init();\n },\n methods: {\n calculateTouchArea: function calculateTouchArea() {\n if (!this.$el.parentNode) return;\n var parentRect = this.$el.parentNode.getBoundingClientRect();\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50\n };\n },\n closeConditional: function closeConditional() {\n return this.isActive && !this._isDestroyed && this.reactsToClick;\n },\n genDirectives: function genDirectives() {\n var _this_1 = this;\n var directives = [{\n name: 'click-outside',\n value: function value() {\n return _this_1.isActive = false;\n },\n args: {\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements\n }\n }];\n !this.touchless && directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight\n }\n });\n return directives;\n },\n /**\n * Sets state before mount to avoid\n * entry transitions in SSR\n */\n init: function init() {\n if (this.permanent) {\n this.isActive = true;\n } else if (this.stateless || this.value != null) {\n this.isActive = this.value;\n } else if (!this.temporary) {\n this.isActive = !this.isMobile;\n }\n },\n swipeRight: function swipeRight(e) {\n if (this.isActive && !this.right) return;\n this.calculateTouchArea();\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n if (!this.right && e.touchstartX <= this.touchArea.left) this.isActive = true;else if (this.right && this.isActive) this.isActive = false;\n },\n swipeLeft: function swipeLeft(e) {\n if (this.isActive && this.right) return;\n this.calculateTouchArea();\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n if (this.right && e.touchstartX >= this.touchArea.right) this.isActive = true;else if (!this.right && this.isActive) this.isActive = false;\n },\n /**\n * Update the application layout\n */\n updateApplication: function updateApplication() {\n return !this.isActive || this.temporary || this.isMobile ? 0 : this.calculatedWidth;\n }\n },\n render: function render(h) {\n var _this_1 = this;\n var data = {\n 'class': this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: {\n click: function click() {\n if (!_this_1.miniVariant) return;\n _this_1.$emit('update:miniVariant', false);\n },\n transitionend: function transitionend(e) {\n if (e.target !== e.currentTarget) return;\n _this_1.$emit('transitionend', e);\n // IE11 does not support new Event('resize')\n var resizeEvent = document.createEvent('UIEvents');\n resizeEvent.initUIEvent('resize', true, false, window, 0);\n window.dispatchEvent(resizeEvent);\n }\n }\n };\n return h('aside', data, [this.$slots.default, h('div', { 'class': 'v-navigation-drawer__border' })]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VNavigationDrawer/index.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VNavigationDrawer/index.ts ***!\n \\***************************************************/\n/*! exports provided: VNavigationDrawer, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VNavigationDrawer */ \"./src/components/VNavigationDrawer/VNavigationDrawer.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VNavigationDrawer\", function() { return _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VOverflowBtn/VOverflowBtn.js\":\n/*!*****************************************************!*\\\n !*** ./src/components/VOverflowBtn/VOverflowBtn.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_overflow_buttons_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_overflow-buttons.styl */ \"./src/stylus/components/_overflow-buttons.styl\");\n/* harmony import */ var _stylus_components_overflow_buttons_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_overflow_buttons_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSelect/VSelect */ \"./src/components/VSelect/VSelect.js\");\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAutocomplete */ \"./src/components/VAutocomplete/index.js\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.js\");\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Styles\n\n// Extensions\n\n\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n name: 'v-overflow-btn',\n props: {\n segmented: Boolean,\n editable: Boolean,\n transition: _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.props.transition\n },\n computed: {\n classes: function classes() {\n return Object.assign(_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.classes.call(this), {\n 'v-overflow-btn': true,\n 'v-overflow-btn--segmented': this.segmented,\n 'v-overflow-btn--editable': this.editable\n });\n },\n isAnyValueAllowed: function isAnyValueAllowed() {\n return this.editable || _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.isAnyValueAllowed.call(this);\n },\n isSingle: function isSingle() {\n return true;\n },\n computedItems: function computedItems() {\n return this.segmented ? this.allItems : this.filteredItems;\n },\n $_menuProps: function $_menuProps() {\n var props = _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.computed.$_menuProps.call(this);\n props.transition = props.transition || 'v-menu-transition';\n return props;\n }\n },\n methods: {\n genSelections: function genSelections() {\n return this.editable ? _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genSelections.call(this) : _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genSelections.call(this); // Override v-autocomplete's override\n },\n genCommaSelection: function genCommaSelection(item, index, last) {\n return this.segmented ? this.genSegmentedBtn(item) : _VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genCommaSelection.call(this, item, index, last);\n },\n genInput: function genInput() {\n var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.methods.genInput.call(this);\n input.data.domProps.value = this.editable ? this.internalSearch : '';\n input.data.attrs.readonly = !this.isAnyValueAllowed;\n return input;\n },\n genLabel: function genLabel() {\n if (this.editable && this.isFocused) return null;\n var label = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.methods.genLabel.call(this);\n if (!label) return label;\n // Reset previously set styles from parent\n label.data.style = {};\n return label;\n },\n genSegmentedBtn: function genSegmentedBtn(item) {\n var _this = this;\n var itemValue = this.getValue(item);\n var itemObj = this.computedItems.find(function (i) {\n return _this.getValue(i) === itemValue;\n }) || item;\n if (!itemObj.text || !itemObj.callback) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_5__[\"consoleWarn\"])('When using \\'segmented\\' prop without a selection slot, items must contain both a text and callback property', this);\n return null;\n }\n return this.$createElement(_VBtn__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n props: { flat: true },\n on: {\n click: function click(e) {\n e.stopPropagation();\n itemObj.callback(e);\n }\n }\n }, [itemObj.text]);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VOverflowBtn/index.js\":\n/*!**********************************************!*\\\n !*** ./src/components/VOverflowBtn/index.js ***!\n \\**********************************************/\n/*! exports provided: VOverflowBtn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VOverflowBtn */ \"./src/components/VOverflowBtn/VOverflowBtn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverflowBtn\", function() { return _VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VPagination/VPagination.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VPagination/VPagination.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_pagination_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_pagination.styl */ \"./src/stylus/components/_pagination.styl\");\n/* harmony import */ var _stylus_components_pagination_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_pagination_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n// Directives\n\n// Mixins\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).extend({\n name: 'v-pagination',\n directives: { Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_2__[\"default\"] },\n props: {\n circle: Boolean,\n disabled: Boolean,\n length: {\n type: Number,\n default: 0,\n validator: function validator(val) {\n return val % 1 === 0;\n }\n },\n totalVisible: [Number, String],\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n maxButtons: 0,\n selected: null\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-pagination': true, 'v-pagination--circle': this.circle, 'v-pagination--disabled': this.disabled }, this.themeClasses);\n },\n items: function items() {\n var maxLength = parseInt(this.totalVisible, 10) || this.maxButtons;\n if (this.length <= maxLength) {\n return this.range(1, this.length);\n }\n var even = maxLength % 2 === 0 ? 1 : 0;\n var left = Math.floor(maxLength / 2);\n var right = this.length - left + 1 + even;\n if (this.value > left && this.value < right) {\n var start = this.value - left + 2;\n var end = this.value + left - 2 - even;\n return __spread([1, '...'], this.range(start, end), ['...', this.length]);\n } else if (this.value === left) {\n var end = this.value + left - 1 - even;\n return __spread(this.range(1, end), ['...', this.length]);\n } else if (this.value === right) {\n var start = this.value - left + 1;\n return __spread([1, '...'], this.range(start, this.length));\n } else {\n return __spread(this.range(1, left), ['...'], this.range(right, this.length));\n }\n }\n },\n watch: {\n value: function value() {\n this.init();\n }\n },\n mounted: function mounted() {\n this.init();\n },\n methods: {\n init: function init() {\n var _this = this;\n this.selected = null;\n this.$nextTick(this.onResize);\n // TODO: Change this (f75dee3a, cbdf7caa)\n setTimeout(function () {\n return _this.selected = _this.value;\n }, 100);\n },\n onResize: function onResize() {\n var width = this.$el && this.$el.parentElement ? this.$el.parentElement.clientWidth : window.innerWidth;\n this.maxButtons = Math.floor((width - 96) / 42);\n },\n next: function next(e) {\n e.preventDefault();\n this.$emit('input', this.value + 1);\n this.$emit('next');\n },\n previous: function previous(e) {\n e.preventDefault();\n this.$emit('input', this.value - 1);\n this.$emit('previous');\n },\n range: function range(from, to) {\n var range = [];\n from = from > 0 ? from : 1;\n for (var i = from; i <= to; i++) {\n range.push(i);\n }\n return range;\n },\n genIcon: function genIcon(h, icon, disabled, fn) {\n return h('li', [h('button', {\n staticClass: 'v-pagination__navigation',\n class: {\n 'v-pagination__navigation--disabled': disabled\n },\n attrs: {\n type: 'button'\n },\n on: disabled ? {} : { click: fn }\n }, [h(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [icon])])]);\n },\n genItem: function genItem(h, i) {\n var _this = this;\n var color = i === this.value && (this.color || 'primary');\n return h('button', this.setBackgroundColor(color, {\n staticClass: 'v-pagination__item',\n class: {\n 'v-pagination__item--active': i === this.value\n },\n attrs: {\n type: 'button'\n },\n on: {\n click: function click() {\n return _this.$emit('input', i);\n }\n }\n }), [i.toString()]);\n },\n genItems: function genItems(h) {\n var _this = this;\n return this.items.map(function (i, index) {\n return h('li', { key: index }, [isNaN(Number(i)) ? h('span', { class: 'v-pagination__more' }, [i.toString()]) : _this.genItem(h, i)]);\n });\n }\n },\n render: function render(h) {\n var children = [this.genIcon(h, this.$vuetify.rtl ? this.nextIcon : this.prevIcon, this.value <= 1, this.previous), this.genItems(h), this.genIcon(h, this.$vuetify.rtl ? this.prevIcon : this.nextIcon, this.value >= this.length, this.next)];\n return h('ul', {\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize\n }],\n class: this.classes\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VPagination/index.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VPagination/index.ts ***!\n \\*********************************************/\n/*! exports provided: VPagination, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPagination__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPagination */ \"./src/components/VPagination/VPagination.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPagination\", function() { return _VPagination__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VPagination__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VParallax/VParallax.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VParallax/VParallax.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_parallax_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_parallax.styl */ \"./src/stylus/components/_parallax.styl\");\n/* harmony import */ var _stylus_components_parallax_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_parallax_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_translatable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/translatable */ \"./src/mixins/translatable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Style\n\n// Mixins\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_translatable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-parallax',\n props: {\n alt: {\n type: String,\n default: ''\n },\n height: {\n type: [String, Number],\n default: 500\n },\n src: String\n },\n data: function data() {\n return {\n isBooted: false\n };\n },\n computed: {\n styles: function styles() {\n return {\n display: 'block',\n opacity: this.isBooted ? 1 : 0,\n transform: \"translate(-50%, \" + this.parallax + \"px)\"\n };\n }\n },\n watch: {\n parallax: function parallax() {\n this.isBooted = true;\n }\n },\n mounted: function mounted() {\n this.init();\n },\n methods: {\n init: function init() {\n var _this = this;\n var img = this.$refs.img;\n if (!img) return;\n if (img.complete) {\n this.translate();\n this.listeners();\n } else {\n img.addEventListener('load', function () {\n _this.translate();\n _this.listeners();\n }, false);\n }\n },\n objHeight: function objHeight() {\n return this.$refs.img.naturalHeight;\n }\n },\n render: function render(h) {\n var imgData = {\n staticClass: 'v-parallax__image',\n style: this.styles,\n attrs: {\n src: this.src,\n alt: this.alt\n },\n ref: 'img'\n };\n var container = h('div', {\n staticClass: 'v-parallax__image-container'\n }, [h('img', imgData)]);\n var content = h('div', {\n staticClass: 'v-parallax__content'\n }, this.$slots.default);\n return h('div', {\n staticClass: 'v-parallax',\n style: {\n height: this.height + \"px\"\n },\n on: this.$listeners\n }, [container, content]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VParallax/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VParallax/index.ts ***!\n \\*******************************************/\n/*! exports provided: VParallax, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VParallax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VParallax */ \"./src/components/VParallax/VParallax.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VParallax\", function() { return _VParallax__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VParallax__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VPicker/VPicker.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VPicker/VPicker.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_pickers_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_pickers.styl */ \"./src/stylus/components/_pickers.styl\");\n/* harmony import */ var _stylus_components_pickers_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_pickers_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../stylus/components/_cards.styl */ \"./src/stylus/components/_cards.styl\");\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n// Mixins\n\n\n// Helpers\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]).extend({\n name: 'v-picker',\n props: {\n fullWidth: Boolean,\n landscape: Boolean,\n transition: {\n type: String,\n default: 'fade-transition'\n },\n width: {\n type: [Number, String],\n default: 290\n }\n },\n computed: {\n computedTitleColor: function computedTitleColor() {\n var defaultTitleColor = this.isDark ? false : this.color || 'primary';\n return this.color || defaultTitleColor;\n }\n },\n methods: {\n genTitle: function genTitle() {\n return this.$createElement('div', this.setBackgroundColor(this.computedTitleColor, {\n staticClass: 'v-picker__title',\n 'class': {\n 'v-picker__title--landscape': this.landscape\n }\n }), this.$slots.title);\n },\n genBodyTransition: function genBodyTransition() {\n return this.$createElement('transition', {\n props: {\n name: this.transition\n }\n }, this.$slots.default);\n },\n genBody: function genBody() {\n return this.$createElement('div', {\n staticClass: 'v-picker__body',\n 'class': this.themeClasses,\n style: this.fullWidth ? undefined : {\n width: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.width)\n }\n }, [this.genBodyTransition()]);\n },\n genActions: function genActions() {\n return this.$createElement('div', {\n staticClass: 'v-picker__actions v-card__actions'\n }, this.$slots.actions);\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-picker v-card',\n 'class': __assign({ 'v-picker--landscape': this.landscape, 'v-picker--full-width': this.fullWidth }, this.themeClasses)\n }, [this.$slots.title ? this.genTitle() : null, this.genBody(), this.$slots.actions ? this.genActions() : null]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VPicker/index.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VPicker/index.ts ***!\n \\*****************************************/\n/*! exports provided: VPicker, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VPicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VPicker */ \"./src/components/VPicker/VPicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPicker\", function() { return _VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VProgressCircular/VProgressCircular.ts\":\n/*!***************************************************************!*\\\n !*** ./src/components/VProgressCircular/VProgressCircular.ts ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_progress_circular_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_progress-circular.styl */ \"./src/stylus/components/_progress-circular.styl\");\n/* harmony import */ var _stylus_components_progress_circular_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_progress_circular_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n// Mixins\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-progress-circular',\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0\n },\n size: {\n type: [Number, String],\n default: 32\n },\n width: {\n type: [Number, String],\n default: 4\n },\n value: {\n type: [Number, String],\n default: 0\n }\n },\n computed: {\n calculatedSize: function calculatedSize() {\n return Number(this.size) + (this.button ? 8 : 0);\n },\n circumference: function circumference() {\n return 2 * Math.PI * this.radius;\n },\n classes: function classes() {\n return {\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button\n };\n },\n normalizedValue: function normalizedValue() {\n if (this.value < 0) {\n return 0;\n }\n if (this.value > 100) {\n return 100;\n }\n return parseFloat(this.value);\n },\n radius: function radius() {\n return 20;\n },\n strokeDashArray: function strokeDashArray() {\n return Math.round(this.circumference * 1000) / 1000;\n },\n strokeDashOffset: function strokeDashOffset() {\n return (100 - this.normalizedValue) / 100 * this.circumference + 'px';\n },\n strokeWidth: function strokeWidth() {\n return Number(this.width) / +this.size * this.viewBoxSize * 2;\n },\n styles: function styles() {\n return {\n height: this.calculatedSize + \"px\",\n width: this.calculatedSize + \"px\"\n };\n },\n svgStyles: function svgStyles() {\n return {\n transform: \"rotate(\" + Number(this.rotate) + \"deg)\"\n };\n },\n viewBoxSize: function viewBoxSize() {\n return this.radius / (1 - Number(this.width) / +this.size);\n }\n },\n methods: {\n genCircle: function genCircle(h, name, offset) {\n return h('circle', {\n class: \"v-progress-circular__\" + name,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset\n }\n });\n },\n genSvg: function genSvg(h) {\n var children = [this.indeterminate || this.genCircle(h, 'underlay', 0), this.genCircle(h, 'overlay', this.strokeDashOffset)];\n return h('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: this.viewBoxSize + \" \" + this.viewBoxSize + \" \" + 2 * this.viewBoxSize + \" \" + 2 * this.viewBoxSize\n }\n }, children);\n }\n },\n render: function render(h) {\n var info = h('div', { staticClass: 'v-progress-circular__info' }, this.$slots.default);\n var svg = this.genSvg(h);\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n 'role': 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n },\n class: this.classes,\n style: this.styles,\n on: this.$listeners\n }), [svg, info]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VProgressCircular/index.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VProgressCircular/index.ts ***!\n \\***************************************************/\n/*! exports provided: VProgressCircular, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressCircular */ \"./src/components/VProgressCircular/VProgressCircular.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressCircular\", function() { return _VProgressCircular__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VProgressCircular__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VProgressLinear/VProgressLinear.ts\":\n/*!***********************************************************!*\\\n !*** ./src/components/VProgressLinear/VProgressLinear.ts ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_progress_linear_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_progress-linear.styl */ \"./src/stylus/components/_progress-linear.styl\");\n/* harmony import */ var _stylus_components_progress_linear_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_progress_linear_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n\n// Mixins\n\n// Helpers\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-progress-linear',\n props: {\n active: {\n type: Boolean,\n default: true\n },\n backgroundColor: {\n type: String,\n default: null\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null\n },\n bufferValue: {\n type: [Number, String],\n default: 100\n },\n color: {\n type: String,\n default: 'primary'\n },\n height: {\n type: [Number, String],\n default: 7\n },\n indeterminate: Boolean,\n query: Boolean,\n value: {\n type: [Number, String],\n default: 0\n }\n },\n computed: {\n backgroundStyle: function backgroundStyle() {\n var backgroundOpacity = this.backgroundOpacity == null ? this.backgroundColor ? 1 : 0.3 : parseFloat(this.backgroundOpacity);\n return {\n height: this.active ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(this.height) : 0,\n opacity: backgroundOpacity,\n width: this.normalizedBufer + \"%\"\n };\n },\n effectiveWidth: function effectiveWidth() {\n if (!this.normalizedBufer) {\n return 0;\n }\n return +this.normalizedValue * 100 / +this.normalizedBufer;\n },\n normalizedBufer: function normalizedBufer() {\n if (this.bufferValue < 0) {\n return 0;\n }\n if (this.bufferValue > 100) {\n return 100;\n }\n return parseFloat(this.bufferValue);\n },\n normalizedValue: function normalizedValue() {\n if (this.value < 0) {\n return 0;\n }\n if (this.value > 100) {\n return 100;\n }\n return parseFloat(this.value);\n },\n styles: function styles() {\n var styles = {};\n if (!this.active) {\n styles.height = 0;\n }\n if (!this.indeterminate && parseFloat(this.normalizedBufer) !== 100) {\n styles.width = this.normalizedBufer + \"%\";\n }\n return styles;\n }\n },\n methods: {\n genDeterminate: function genDeterminate(h) {\n return h('div', this.setBackgroundColor(this.color, {\n ref: 'front',\n staticClass: \"v-progress-linear__bar__determinate\",\n style: {\n width: this.effectiveWidth + \"%\"\n }\n }));\n },\n genBar: function genBar(h, name) {\n var _a;\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__bar__indeterminate',\n class: (_a = {}, _a[name] = true, _a)\n }));\n },\n genIndeterminate: function genIndeterminate(h) {\n return h('div', {\n ref: 'front',\n staticClass: 'v-progress-linear__bar__indeterminate',\n class: {\n 'v-progress-linear__bar__indeterminate--active': this.active\n }\n }, [this.genBar(h, 'long'), this.genBar(h, 'short')]);\n }\n },\n render: function render(h) {\n var fade = h(_transitions__WEBPACK_IMPORTED_MODULE_4__[\"VFadeTransition\"], this.indeterminate ? [this.genIndeterminate(h)] : []);\n var slide = h(_transitions__WEBPACK_IMPORTED_MODULE_4__[\"VSlideXTransition\"], this.indeterminate ? [] : [this.genDeterminate(h)]);\n var bar = h('div', {\n staticClass: 'v-progress-linear__bar',\n style: this.styles\n }, [fade, slide]);\n var background = h('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle\n }));\n var content = this.$slots.default && h('div', {\n staticClass: 'v-progress-linear__content'\n }, this.$slots.default);\n return h('div', {\n staticClass: 'v-progress-linear',\n attrs: {\n 'role': 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBufer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n },\n class: {\n 'v-progress-linear--query': this.query\n },\n style: {\n height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(this.height)\n },\n on: this.$listeners\n }, [background, bar, content]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VProgressLinear/index.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VProgressLinear/index.ts ***!\n \\*************************************************/\n/*! exports provided: VProgressLinear, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VProgressLinear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VProgressLinear */ \"./src/components/VProgressLinear/VProgressLinear.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressLinear\", function() { return _VProgressLinear__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VProgressLinear__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadio.js\":\n/*!**********************************************!*\\\n !*** ./src/components/VRadioGroup/VRadio.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_radios_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_radios.styl */ \"./src/stylus/components/_radios.styl\");\n/* harmony import */ var _stylus_components_radios_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_radios_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_rippleable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/rippleable */ \"./src/mixins/rippleable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable.js\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n// Styles\n\n// Components\n\n\n// Mixins\n\n\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-radio',\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_rippleable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])('radio', 'v-radio', 'v-radio-group'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n inheritAttrs: false,\n props: {\n color: {\n type: String,\n default: 'accent'\n },\n disabled: Boolean,\n label: String,\n onIcon: {\n type: String,\n default: '$vuetify.icons.radioOn'\n },\n offIcon: {\n type: String,\n default: '$vuetify.icons.radioOff'\n },\n readonly: Boolean,\n value: null\n },\n data: function data() {\n return {\n isActive: false,\n isFocused: false,\n parentError: false\n };\n },\n computed: {\n computedData: function computedData() {\n return this.setTextColor(!this.parentError && this.isActive && this.color, {\n staticClass: 'v-radio',\n 'class': __assign({ 'v-radio--is-disabled': this.isDisabled, 'v-radio--is-focused': this.isFocused }, this.themeClasses)\n });\n },\n computedColor: function computedColor() {\n return this.isActive ? this.color : this.radio.validationState || false;\n },\n computedIcon: function computedIcon() {\n return this.isActive ? this.onIcon : this.offIcon;\n },\n hasState: function hasState() {\n return this.isActive || !!this.radio.validationState;\n },\n isDisabled: function isDisabled() {\n return this.disabled || !!this.radio.disabled;\n },\n isReadonly: function isReadonly() {\n return this.readonly || !!this.radio.readonly;\n }\n },\n mounted: function mounted() {\n this.radio.register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.radio.unregister(this);\n },\n methods: {\n genInput: function genInput() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n // We can't actually use the mixin directly because\n // it's made for standalone components, but its\n // genInput method is exactly what we need\n return (_a = _mixins_selectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"].options.methods.genInput).call.apply(_a, __spread([this], args));\n },\n genLabel: function genLabel() {\n return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n on: { click: this.onChange },\n attrs: {\n for: this.id\n },\n props: {\n color: this.radio.validationState || '',\n dark: this.dark,\n focused: this.hasState,\n light: this.light\n }\n }, this.$slots.label || this.label);\n },\n genRadio: function genRadio() {\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.genInput('radio', __assign({ name: this.radio.name || (this.radio._uid ? 'v-radio-' + this.radio._uid : false), value: this.value }, this.$attrs)), this.genRipple(this.setTextColor(this.computedColor)), this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.setTextColor(this.computedColor, {\n props: {\n dark: this.dark,\n light: this.light\n }\n }), this.computedIcon)]);\n },\n onFocus: function onFocus(e) {\n this.isFocused = true;\n this.$emit('focus', e);\n },\n onBlur: function onBlur(e) {\n this.isFocused = false;\n this.$emit('blur', e);\n },\n onChange: function onChange() {\n if (this.isDisabled || this.isReadonly) return;\n if (!this.isDisabled && (!this.isActive || !this.radio.mandatory)) {\n this.$emit('change', this.value);\n }\n },\n onKeydown: function onKeydown() {}\n },\n render: function render(h) {\n return h('div', this.computedData, [this.genRadio(), this.genLabel()]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/VRadioGroup.js\":\n/*!***************************************************!*\\\n !*** ./src/components/VRadioGroup/VRadioGroup.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_selection-controls.styl */ \"./src/stylus/components/_selection-controls.styl\");\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stylus_components_radio_group_styl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../stylus/components/_radio-group.styl */ \"./src/stylus/components/_radio-group.styl\");\n/* harmony import */ var _stylus_components_radio_group_styl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_radio_group_styl__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _mixins_comparable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/comparable */ \"./src/mixins/comparable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n// Styles\n\n\n// Components\n\n// Mixins\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n name: 'v-radio-group',\n mixins: [_mixins_comparable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_4__[\"provide\"])('radio')],\n model: {\n prop: 'value',\n event: 'change'\n },\n provide: function provide() {\n return {\n radio: this\n };\n },\n props: {\n column: {\n type: Boolean,\n default: true\n },\n height: {\n type: [Number, String],\n default: 'auto'\n },\n mandatory: {\n type: Boolean,\n default: true\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: {\n default: null\n }\n },\n data: function data() {\n return {\n internalTabIndex: -1,\n radios: []\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row\n };\n }\n },\n watch: {\n hasError: 'setErrorState',\n internalValue: 'setActiveRadio'\n },\n mounted: function mounted() {\n this.setErrorState(this.hasError);\n this.setActiveRadio();\n },\n methods: {\n genDefaultSlot: function genDefaultSlot() {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n role: 'radiogroup'\n }\n }, _VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].options.methods.genDefaultSlot.call(this));\n },\n onRadioChange: function onRadioChange(value) {\n if (this.disabled) return;\n this.hasInput = true;\n this.internalValue = value;\n this.setActiveRadio();\n this.$nextTick(this.validate);\n },\n onRadioBlur: function onRadioBlur(e) {\n if (!e.relatedTarget || !e.relatedTarget.classList.contains('v-radio')) {\n this.hasInput = true;\n this.$emit('blur', e);\n }\n },\n register: function register(radio) {\n radio.isActive = this.valueComparator(this.internalValue, radio.value);\n radio.$on('change', this.onRadioChange);\n radio.$on('blur', this.onRadioBlur);\n this.radios.push(radio);\n },\n setErrorState: function setErrorState(val) {\n for (var index = this.radios.length; --index >= 0;) {\n this.radios[index].parentError = val;\n }\n },\n setActiveRadio: function setActiveRadio() {\n for (var index = this.radios.length; --index >= 0;) {\n var radio = this.radios[index];\n radio.isActive = this.valueComparator(this.internalValue, radio.value);\n }\n },\n unregister: function unregister(radio) {\n radio.$off('change', this.onRadioChange);\n radio.$off('blur', this.onRadioBlur);\n var index = this.radios.findIndex(function (r) {\n return r === radio;\n });\n /* istanbul ignore else */\n if (index > -1) this.radios.splice(index, 1);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRadioGroup/index.js\":\n/*!*********************************************!*\\\n !*** ./src/components/VRadioGroup/index.js ***!\n \\*********************************************/\n/*! exports provided: VRadioGroup, VRadio, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRadioGroup */ \"./src/components/VRadioGroup/VRadioGroup.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadioGroup\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VRadio__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VRadio */ \"./src/components/VRadioGroup/VRadio.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadio\", function() { return _VRadio__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VRadioGroup: _VRadioGroup__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VRadio: _VRadio__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VRangeSlider/VRangeSlider.js\":\n/*!*****************************************************!*\\\n !*** ./src/components/VRangeSlider/VRangeSlider.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_range_sliders_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_range-sliders.styl */ \"./src/stylus/components/_range-sliders.styl\");\n/* harmony import */ var _stylus_components_range_sliders_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_range_sliders_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VSlider */ \"./src/components/VSlider/index.js\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n// Styles\n\n// Extensions\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-range-slider',\n extends: _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n props: {\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data(vm) {\n return {\n activeThumb: null,\n lazyValue: !vm.value.length ? [0, 0] : vm.value\n };\n },\n computed: {\n classes: function classes() {\n return Object.assign({}, {\n 'v-input--range-slider': true\n }, _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this));\n },\n internalValue: {\n get: function get() {\n return this.lazyValue;\n },\n set: function set(val) {\n var _this = this;\n var _a = this,\n min = _a.min,\n max = _a.max;\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n var value = val.map(function (v) {\n return _this.roundValue(Math.min(Math.max(v, min), max));\n });\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) this.activeThumb = this.activeThumb === 1 ? 0 : 1;\n value = [value[1], value[0]];\n }\n this.lazyValue = value;\n if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"deepEqual\"])(value, this.value)) this.$emit('input', value);\n this.validate();\n }\n },\n inputWidth: function inputWidth() {\n var _this = this;\n return this.internalValue.map(function (v) {\n return (_this.roundValue(v) - _this.min) / (_this.max - _this.min) * 100;\n });\n },\n isDirty: function isDirty() {\n var _this = this;\n return this.internalValue.some(function (v) {\n return v !== _this.min;\n }) || this.alwaysDirty;\n },\n trackFillStyles: function trackFillStyles() {\n var styles = _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.trackFillStyles.call(this);\n var fillPercent = Math.abs(this.inputWidth[0] - this.inputWidth[1]);\n styles.width = \"calc(\" + fillPercent + \"% - \" + this.trackPadding + \"px)\";\n styles[this.$vuetify.rtl ? 'right' : 'left'] = this.inputWidth[0] + \"%\";\n return styles;\n },\n trackPadding: function trackPadding() {\n if (this.isDirty || this.internalValue[0]) return 0;\n return _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.trackPadding.call(this);\n }\n },\n methods: {\n getIndexOfClosestValue: function getIndexOfClosestValue(arr, v) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0;else return 1;\n },\n genInput: function genInput() {\n var _this = this;\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(2).map(function (i) {\n var input = _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInput.call(_this);\n input.data.attrs.value = _this.internalValue[i];\n input.data.on.focus = function (e) {\n _this.activeThumb = i;\n _VSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onFocus.call(_this, e);\n };\n return input;\n });\n },\n genChildren: function genChildren() {\n var _this = this;\n return [this.genInput(), this.genTrackContainer(), this.genSteps(), Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"createRange\"])(2).map(function (i) {\n var value = _this.internalValue[i];\n var onDrag = function onDrag(e) {\n _this.isActive = true;\n _this.activeThumb = i;\n _this.onThumbMouseDown(e);\n };\n var valueWidth = _this.inputWidth[i];\n var isActive = (_this.isFocused || _this.isActive) && _this.activeThumb === i;\n return _this.genThumbContainer(value, valueWidth, isActive, onDrag);\n })];\n },\n onSliderClick: function onSliderClick(e) {\n if (!this.isActive) {\n this.isFocused = true;\n this.onMouseMove(e, true);\n this.$emit('change', this.internalValue);\n }\n },\n onMouseMove: function onMouseMove(e, trackClick) {\n if (trackClick === void 0) {\n trackClick = false;\n }\n var _a = this.parseMouseMove(e),\n value = _a.value,\n isInsideTrack = _a.isInsideTrack;\n if (isInsideTrack) {\n if (trackClick) this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n this.setInternalValue(value);\n }\n },\n onKeyDown: function onKeyDown(e) {\n var value = this.parseKeyDown(e, this.internalValue[this.activeThumb]);\n if (value == null) return;\n this.setInternalValue(value);\n },\n setInternalValue: function setInternalValue(value) {\n var _this = this;\n this.internalValue = this.internalValue.map(function (v, i) {\n if (i === _this.activeThumb) return value;else return Number(v);\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VRangeSlider/index.js\":\n/*!**********************************************!*\\\n !*** ./src/components/VRangeSlider/index.js ***!\n \\**********************************************/\n/*! exports provided: VRangeSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRangeSlider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRangeSlider */ \"./src/components/VRangeSlider/VRangeSlider.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRangeSlider\", function() { return _VRangeSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VRangeSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VRating/VRating.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VRating/VRating.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_rating_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_rating.styl */ \"./src/stylus/components/_rating.styl\");\n/* harmony import */ var _stylus_components_rating_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_rating_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable.ts\");\n/* harmony import */ var _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/sizeable */ \"./src/mixins/sizeable.ts\");\n/* harmony import */ var _mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/rippleable */ \"./src/mixins/rippleable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Styles\n\n// Components\n\n// Mixins\n\n\n\n\n\n// Utilities\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]).extend({\n name: 'v-rating',\n props: {\n backgroundColor: {\n type: String,\n default: 'accent'\n },\n color: {\n type: String,\n default: 'primary'\n },\n dense: Boolean,\n emptyIcon: {\n type: String,\n default: '$vuetify.icons.ratingEmpty'\n },\n fullIcon: {\n type: String,\n default: '$vuetify.icons.ratingFull'\n },\n halfIcon: {\n type: String,\n default: '$vuetify.icons.ratingHalf'\n },\n halfIncrements: Boolean,\n length: {\n type: [Number, String],\n default: 5\n },\n clearable: Boolean,\n readonly: Boolean,\n hover: Boolean,\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n hoverIndex: -1,\n internalValue: this.value\n };\n },\n computed: {\n directives: function directives() {\n if (this.readonly || !this.ripple) return [];\n return [{\n name: 'ripple',\n value: { circle: true }\n }];\n },\n iconProps: function iconProps() {\n var _a = this.$props,\n dark = _a.dark,\n medium = _a.medium,\n large = _a.large,\n light = _a.light,\n small = _a.small,\n size = _a.size,\n xLarge = _a.xLarge;\n return {\n dark: dark,\n medium: medium,\n large: large,\n light: light,\n size: size,\n small: small,\n xLarge: xLarge\n };\n },\n isHovering: function isHovering() {\n return this.hover && this.hoverIndex >= 0;\n }\n },\n watch: {\n internalValue: function internalValue(val) {\n val !== this.value && this.$emit('input', val);\n },\n value: function value(val) {\n this.internalValue = val;\n }\n },\n methods: {\n createClickFn: function createClickFn(i) {\n var _this = this;\n return function (e) {\n if (_this.readonly) return;\n var newValue = _this.genHoverIndex(e, i);\n if (_this.clearable && _this.internalValue === newValue) {\n _this.internalValue = 0;\n } else {\n _this.internalValue = newValue;\n }\n };\n },\n createProps: function createProps(i) {\n var props = {\n index: i,\n value: this.internalValue,\n click: this.createClickFn(i),\n isFilled: Math.floor(this.internalValue) > i,\n isHovered: Math.floor(this.hoverIndex) > i\n };\n if (this.halfIncrements) {\n props.isHalfHovered = !props.isHovered && (this.hoverIndex - i) % 1 > 0;\n props.isHalfFilled = !props.isFilled && (this.internalValue - i) % 1 > 0;\n }\n return props;\n },\n genHoverIndex: function genHoverIndex(e, i) {\n return i + (this.isHalfEvent(e) ? 0.5 : 1);\n },\n getIconName: function getIconName(props) {\n var isFull = this.isHovering ? props.isHovered : props.isFilled;\n var isHalf = this.isHovering ? props.isHalfHovered : props.isHalfFilled;\n return isFull ? this.fullIcon : isHalf ? this.halfIcon : this.emptyIcon;\n },\n getColor: function getColor(props) {\n if (this.isHovering) {\n if (props.isHovered || props.isHalfHovered) return this.color;\n } else {\n if (props.isFilled || props.isHalfFilled) return this.color;\n }\n return this.backgroundColor;\n },\n isHalfEvent: function isHalfEvent(e) {\n if (this.halfIncrements) {\n var rect = e.target && e.target.getBoundingClientRect();\n if (rect && e.pageX - rect.left < rect.width / 2) return true;\n }\n return false;\n },\n onMouseEnter: function onMouseEnter(e, i) {\n var _this = this;\n this.runDelay('open', function () {\n _this.hoverIndex = _this.genHoverIndex(e, i);\n });\n },\n onMouseLeave: function onMouseLeave() {\n var _this = this;\n this.runDelay('close', function () {\n return _this.hoverIndex = -1;\n });\n },\n genItem: function genItem(i) {\n var _this = this;\n var props = this.createProps(i);\n if (this.$scopedSlots.item) return this.$scopedSlots.item(props);\n var listeners = {\n click: props.click\n };\n if (this.hover) {\n listeners.mouseenter = function (e) {\n return _this.onMouseEnter(e, i);\n };\n listeners.mouseleave = this.onMouseLeave;\n if (this.halfIncrements) {\n listeners.mousemove = function (e) {\n return _this.onMouseEnter(e, i);\n };\n }\n }\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.setTextColor(this.getColor(props), {\n directives: this.directives,\n props: this.iconProps,\n on: listeners\n }), [this.getIconName(props)]);\n }\n },\n render: function render(h) {\n var _this = this;\n var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"createRange\"])(Number(this.length)).map(function (i) {\n return _this.genItem(i);\n });\n return h('div', {\n staticClass: 'v-rating',\n class: {\n 'v-rating--readonly': this.readonly,\n 'v-rating--dense': this.dense\n }\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VRating/index.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VRating/index.ts ***!\n \\*****************************************/\n/*! exports provided: VRating, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VRating__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VRating */ \"./src/components/VRating/VRating.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRating\", function() { return _VRating__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VRating__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VResponsive/VResponsive.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VResponsive/VResponsive.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_responsive_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_responsive.styl */ \"./src/stylus/components/_responsive.styl\");\n/* harmony import */ var _stylus_components_responsive_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_responsive_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n// Mixins\n\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_measurable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).extend({\n name: 'v-responsive',\n props: {\n aspectRatio: [String, Number]\n },\n computed: {\n computedAspectRatio: function computedAspectRatio() {\n return Number(this.aspectRatio);\n },\n aspectStyle: function aspectStyle() {\n return this.computedAspectRatio ? { paddingBottom: 1 / this.computedAspectRatio * 100 + '%' } : undefined;\n },\n __cachedSizer: function __cachedSizer() {\n if (!this.aspectStyle) return [];\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer'\n });\n }\n },\n methods: {\n genContent: function genContent() {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content'\n }, this.$slots.default);\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners\n }, [this.__cachedSizer, this.genContent()]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VResponsive/index.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VResponsive/index.ts ***!\n \\*********************************************/\n/*! exports provided: VResponsive, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VResponsive */ \"./src/components/VResponsive/VResponsive.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VResponsive\", function() { return _VResponsive__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VResponsive__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/VSelect.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VSelect/VSelect.js ***!\n \\*******************************************/\n/*! exports provided: defaultMenuProps, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultMenuProps\", function() { return defaultMenuProps; });\n/* harmony import */ var _stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_text-fields.styl */ \"./src/stylus/components/_text-fields.styl\");\n/* harmony import */ var _stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stylus_components_select_styl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../stylus/components/_select.styl */ \"./src/stylus/components/_select.styl\");\n/* harmony import */ var _stylus_components_select_styl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_select_styl__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VChip */ \"./src/components/VChip/index.ts\");\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VMenu */ \"./src/components/VMenu/index.js\");\n/* harmony import */ var _VSelectList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VSelectList */ \"./src/components/VSelect/VSelectList.js\");\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.js\");\n/* harmony import */ var _mixins_comparable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/comparable */ \"./src/mixins/comparable.ts\");\n/* harmony import */ var _mixins_filterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/filterable */ \"./src/mixins/filterable.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = undefined && undefined.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\n// Styles\n\n\n// Components\n\n\n\n// Extensions\n\n// Mixins\n\n\n// Directives\n\n// Helpers\n\n\nvar defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n openOnClick: false,\n maxHeight: 300\n};\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__[\"default\"].extend({\n name: 'v-select',\n directives: {\n ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n },\n mixins: [_mixins_comparable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_filterable__WEBPACK_IMPORTED_MODULE_7__[\"default\"]],\n props: {\n appendIcon: {\n type: String,\n default: '$vuetify.icons.dropdown'\n },\n appendIconCb: Function,\n attach: {\n type: null,\n default: false\n },\n browserAutocomplete: {\n type: String,\n default: 'on'\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n itemAvatar: {\n type: [String, Array, Function],\n default: 'avatar'\n },\n itemDisabled: {\n type: [String, Array, Function],\n default: 'disabled'\n },\n itemText: {\n type: [String, Array, Function],\n default: 'text'\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'value'\n },\n menuProps: {\n type: [String, Array, Object],\n default: function _default() {\n return defaultMenuProps;\n }\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n searchInput: {\n default: null\n },\n smallChips: Boolean\n },\n data: function data(vm) {\n return {\n attrsInput: { role: 'combobox' },\n cachedItems: vm.cacheItems ? vm.items : [],\n content: null,\n isBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: vm.value !== undefined ? vm.value : vm.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0\n };\n },\n computed: {\n /* All items that the select has */\n allItems: function allItems() {\n return this.filterDuplicates(this.cachedItems.concat(this.items));\n },\n classes: function classes() {\n return Object.assign({}, _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.computed.classes.call(this), {\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive\n });\n },\n /* Used by other components to overwrite */\n computedItems: function computedItems() {\n return this.allItems;\n },\n counterValue: function counterValue() {\n return this.multiple ? this.selectedItems.length : (this.getText(this.selectedItems[0]) || '').toString().length;\n },\n directives: function directives() {\n return this.isFocused ? [{\n name: 'click-outside',\n value: this.blur,\n args: {\n closeConditional: this.closeConditional\n }\n }] : undefined;\n },\n dynamicHeight: function dynamicHeight() {\n return 'auto';\n },\n hasChips: function hasChips() {\n return this.chips || this.smallChips;\n },\n hasSlot: function hasSlot() {\n return Boolean(this.hasChips || this.$scopedSlots.selection);\n },\n isDirty: function isDirty() {\n return this.selectedItems.length > 0;\n },\n listData: function listData() {\n var _a;\n var scopeId = this.$vnode && this.$vnode.context.$options._scopeId;\n return {\n attrs: scopeId ? (_a = {}, _a[scopeId] = true, _a) : null,\n props: {\n action: this.multiple && !this.isHidingSelected,\n color: this.color,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n noDataText: this.$vuetify.t(this.noDataText),\n selectedItems: this.selectedItems,\n itemAvatar: this.itemAvatar,\n itemDisabled: this.itemDisabled,\n itemValue: this.itemValue,\n itemText: this.itemText\n },\n on: {\n select: this.selectItem\n },\n scopedSlots: {\n item: this.$scopedSlots.item\n }\n };\n },\n staticList: function staticList() {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"consoleError\"])('assert: staticList should not be called if slots are used');\n }\n return this.$createElement(_VSelectList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], this.listData);\n },\n virtualizedItems: function virtualizedItems() {\n return this.$_menuProps.auto ? this.computedItems : this.computedItems.slice(0, this.lastItem);\n },\n menuCanShow: function menuCanShow() {\n return true;\n },\n $_menuProps: function $_menuProps() {\n var normalisedProps;\n normalisedProps = typeof this.menuProps === 'string' ? this.menuProps.split(',') : this.menuProps;\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce(function (acc, p) {\n acc[p.trim()] = true;\n return acc;\n }, {});\n }\n return __assign({}, defaultMenuProps, { value: this.menuCanShow && this.isMenuActive, nudgeBottom: this.nudgeBottom ? this.nudgeBottom : normalisedProps.offsetY ? 1 : 0 }, normalisedProps);\n }\n },\n watch: {\n internalValue: function internalValue(val) {\n this.initialValue = val;\n this.setSelectedItems();\n },\n isBooted: function isBooted() {\n var _this = this;\n this.$nextTick(function () {\n if (_this.content && _this.content.addEventListener) {\n _this.content.addEventListener('scroll', _this.onScroll, false);\n }\n });\n },\n isMenuActive: function isMenuActive(val) {\n if (!val) return;\n this.isBooted = true;\n },\n items: {\n immediate: true,\n handler: function handler(val) {\n if (this.cacheItems) {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val));\n }\n this.setSelectedItems();\n }\n }\n },\n mounted: function mounted() {\n this.content = this.$refs.menu && this.$refs.menu.$refs.content;\n },\n methods: {\n /** @public */\n blur: function blur(e) {\n _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.blur.call(this, e);\n this.isMenuActive = false;\n this.isFocused = false;\n this.selectedIndex = -1;\n },\n /** @public */\n activateMenu: function activateMenu() {\n this.isMenuActive = true;\n },\n clearableCallback: function clearableCallback() {\n var _this = this;\n this.setValue(this.multiple ? [] : undefined);\n this.$nextTick(function () {\n return _this.$refs.input.focus();\n });\n if (this.openOnClear) this.isMenuActive = true;\n },\n closeConditional: function closeConditional(e) {\n return !this._isDestroyed &&\n // Click originates from outside the menu content\n !!this.content && !this.content.contains(e.target) &&\n // Click originates from outside the element\n !!this.$el && !this.$el.contains(e.target) && e.target !== this.$el;\n },\n filterDuplicates: function filterDuplicates(arr) {\n var uniqueValues = new Map();\n for (var index = 0; index < arr.length; ++index) {\n var item = arr[index];\n var val = this.getValue(item);\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item);\n }\n return Array.from(uniqueValues.values());\n },\n findExistingIndex: function findExistingIndex(item) {\n var _this = this;\n var itemValue = this.getValue(item);\n return (this.internalValue || []).findIndex(function (i) {\n return _this.valueComparator(_this.getValue(i), itemValue);\n });\n },\n genChipSelection: function genChipSelection(item, index) {\n var _this = this;\n var isDisabled = this.disabled || this.readonly || this.getDisabled(item);\n return this.$createElement(_VChip__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n staticClass: 'v-chip--select-multi',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && !isDisabled,\n disabled: isDisabled,\n selected: index === this.selectedIndex,\n small: this.smallChips\n },\n on: {\n click: function click(e) {\n if (isDisabled) return;\n e.stopPropagation();\n _this.selectedIndex = index;\n },\n input: function input() {\n return _this.onChipInput(item);\n }\n },\n key: this.getValue(item)\n }, this.getText(item));\n },\n genCommaSelection: function genCommaSelection(item, index, last) {\n // Item may be an object\n // TODO: Remove JSON.stringify\n var key = JSON.stringify(this.getValue(item));\n var color = index === this.selectedIndex && this.color;\n var isDisabled = this.disabled || this.getDisabled(item);\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n 'class': {\n 'v-select__selection--disabled': isDisabled\n },\n key: key\n }), \"\" + this.getText(item) + (last ? '' : ', '));\n },\n genDefaultSlot: function genDefaultSlot() {\n var selections = this.genSelections();\n var input = this.genInput();\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input);\n // Otherwise push it into children\n } else {\n selections.children = selections.children || [];\n selections.children.push(input);\n }\n return [this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives\n }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, selections, this.suffix ? this.genAffix('suffix') : null, this.genClearIcon(), this.genIconSlot()]), this.genMenu(), this.genProgress()];\n },\n genInput: function genInput() {\n var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.genInput.call(this);\n input.data.domProps.value = null;\n input.data.attrs.readonly = true;\n input.data.attrs['aria-readonly'] = String(this.readonly);\n input.data.on.keypress = this.onKeyPress;\n return input;\n },\n genList: function genList() {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot();\n } else {\n return this.staticList;\n }\n },\n genListWithSlot: function genListWithSlot() {\n var _this = this;\n var slots = ['prepend-item', 'no-data', 'append-item'].filter(function (slotName) {\n return _this.$slots[slotName];\n }).map(function (slotName) {\n return _this.$createElement('template', {\n slot: slotName\n }, _this.$slots[slotName]);\n });\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(_VSelectList__WEBPACK_IMPORTED_MODULE_4__[\"default\"], __assign({}, this.listData), slots);\n },\n genMenu: function genMenu() {\n var _this = this;\n var e_1, _a;\n var props = this.$_menuProps;\n props.activator = this.$refs['input-slot'];\n // Deprecate using menu props directly\n // TODO: remove (2.0)\n var inheritedProps = Object.keys(_VMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.props);\n var deprecatedProps = Object.keys(this.$attrs).reduce(function (acc, attr) {\n if (inheritedProps.includes(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"camelize\"])(attr))) acc.push(attr);\n return acc;\n }, []);\n try {\n for (var deprecatedProps_1 = __values(deprecatedProps), deprecatedProps_1_1 = deprecatedProps_1.next(); !deprecatedProps_1_1.done; deprecatedProps_1_1 = deprecatedProps_1.next()) {\n var prop = deprecatedProps_1_1.value;\n props[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"camelize\"])(prop)] = this.$attrs[prop];\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (deprecatedProps_1_1 && !deprecatedProps_1_1.done && (_a = deprecatedProps_1.return)) _a.call(deprecatedProps_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (true) {\n if (deprecatedProps.length) {\n var multiple = deprecatedProps.length > 1;\n var replacement_1 = deprecatedProps.reduce(function (acc, p) {\n acc[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"camelize\"])(p)] = _this.$attrs[p];\n return acc;\n }, {});\n var props_1 = deprecatedProps.map(function (p) {\n return \"'\" + p + \"'\";\n }).join(', ');\n var separator = multiple ? '\\n' : '\\'';\n var onlyBools = Object.keys(replacement_1).every(function (prop) {\n var propType = _VMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].options.props[prop];\n var value = replacement_1[prop];\n return value === true || (propType.type || propType) === Boolean && value === '';\n });\n if (onlyBools) {\n replacement_1 = Object.keys(replacement_1).join(', ');\n } else {\n replacement_1 = JSON.stringify(replacement_1, null, multiple ? 2 : 0).replace(/\"([^(\")\"]+)\":/g, '$1:').replace(/\"/g, '\\'');\n }\n Object(_util_console__WEBPACK_IMPORTED_MODULE_10__[\"consoleWarn\"])(props_1 + \" \" + (multiple ? 'are' : 'is') + \" deprecated, use \" + (\"\" + separator + (onlyBools ? '' : ':') + \"menu-props=\\\"\" + replacement_1 + \"\\\"\" + separator + \" instead\"), this);\n }\n }\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el;\n } else {\n props.attach = this.attach;\n }\n return this.$createElement(_VMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n props: props,\n on: {\n input: function input(val) {\n _this.isMenuActive = val;\n _this.isFocused = val;\n }\n },\n ref: 'menu'\n }, [this.genList()]);\n },\n genSelections: function genSelections() {\n var length = this.selectedItems.length;\n var children = new Array(length);\n var genSelection;\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection;\n } else if (this.hasChips) {\n genSelection = this.genChipSelection;\n } else {\n genSelection = this.genCommaSelection;\n }\n while (length--) {\n children[length] = genSelection(this.selectedItems[length], length, length === children.length - 1);\n }\n return this.$createElement('div', {\n staticClass: 'v-select__selections'\n }, children);\n },\n genSlotSelection: function genSlotSelection(item, index) {\n return this.$scopedSlots.selection({\n parent: this,\n item: item,\n index: index,\n selected: index === this.selectedIndex,\n disabled: this.disabled || this.readonly\n });\n },\n getMenuIndex: function getMenuIndex() {\n return this.$refs.menu ? this.$refs.menu.listIndex : -1;\n },\n getDisabled: function getDisabled(item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getPropertyFromItem\"])(item, this.itemDisabled, false);\n },\n getText: function getText(item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getPropertyFromItem\"])(item, this.itemText, item);\n },\n getValue: function getValue(item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"getPropertyFromItem\"])(item, this.itemValue, this.getText(item));\n },\n onBlur: function onBlur(e) {\n e && this.$emit('blur', e);\n },\n onChipInput: function onChipInput(item) {\n if (this.multiple) this.selectItem(item);else this.setValue(null);\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true;\n } else {\n this.isMenuActive = false;\n }\n this.selectedIndex = -1;\n },\n onClick: function onClick() {\n if (this.isDisabled) return;\n this.isMenuActive = true;\n if (!this.isFocused) {\n this.isFocused = true;\n this.$emit('focus');\n }\n },\n onEnterDown: function onEnterDown() {\n this.onBlur();\n },\n onEscDown: function onEscDown(e) {\n e.preventDefault();\n if (this.isMenuActive) {\n e.stopPropagation();\n this.isMenuActive = false;\n }\n },\n onKeyPress: function onKeyPress(e) {\n var _this = this;\n if (this.multiple) return;\n var KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n var now = performance.now();\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = '';\n }\n this.keyboardLookupPrefix += e.key.toLowerCase();\n this.keyboardLookupLastTime = now;\n var index = this.allItems.findIndex(function (item) {\n var text = (_this.getText(item) || '').toString();\n return text.toLowerCase().startsWith(_this.keyboardLookupPrefix);\n });\n var item = this.allItems[index];\n if (index !== -1) {\n this.setValue(this.returnObject ? item : this.getValue(item));\n setTimeout(function () {\n return _this.setMenuIndex(index);\n });\n }\n },\n onKeyDown: function onKeyDown(e) {\n var keyCode = e.keyCode;\n // If enter, space, up, or down is pressed, open menu\n if (!this.readonly && !this.isMenuActive && [_util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].enter, _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].space, _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].down].includes(keyCode)) this.activateMenu();\n if (this.isMenuActive && this.$refs.menu) this.$refs.menu.changeListIndex(e);\n // This should do something different\n if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].enter) return this.onEnterDown(e);\n // If escape deactivate the menu\n if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].esc) return this.onEscDown(e);\n // If tab - select item or close menu\n if (keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_9__[\"keyCodes\"].tab) return this.onTabDown(e);\n },\n onMouseUp: function onMouseUp(e) {\n var _this = this;\n if (this.hasMouseDown) {\n var appendInner = this.$refs['append-inner'];\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isMenuActive && appendInner && (appendInner === e.target || appendInner.contains(e.target))) {\n this.$nextTick(function () {\n return _this.isMenuActive = !_this.isMenuActive;\n });\n // If user is clicking in the container\n // and field is enclosed, activate it\n } else if (this.isEnclosed && !this.isDisabled) {\n this.isMenuActive = true;\n }\n }\n _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__[\"default\"].options.methods.onMouseUp.call(this, e);\n },\n onScroll: function onScroll() {\n var _this = this;\n if (!this.isMenuActive) {\n requestAnimationFrame(function () {\n return _this.content.scrollTop = 0;\n });\n } else {\n if (this.lastItem >= this.computedItems.length) return;\n var showMoreItems = this.content.scrollHeight - (this.content.scrollTop + this.content.clientHeight) < 200;\n if (showMoreItems) {\n this.lastItem += 20;\n }\n }\n },\n onTabDown: function onTabDown(e) {\n var menuIndex = this.getMenuIndex();\n var listTile = this.$refs.menu.tiles[menuIndex];\n // An item that is selected by\n // menu-index should toggled\n if (listTile && listTile.className.indexOf('v-list__tile--highlighted') > -1 && this.isMenuActive && menuIndex > -1) {\n e.preventDefault();\n e.stopPropagation();\n listTile.click();\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e);\n }\n },\n selectItem: function selectItem(item) {\n var _this = this;\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item));\n this.isMenuActive = false;\n } else {\n var internalValue = (this.internalValue || []).slice();\n var i = this.findExistingIndex(item);\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item);\n this.setValue(internalValue.map(function (i) {\n return _this.returnObject ? i : _this.getValue(i);\n }));\n // When selecting multiple\n // adjust menu after each\n // selection\n this.$nextTick(function () {\n _this.$refs.menu && _this.$refs.menu.updateDimensions();\n });\n }\n },\n setMenuIndex: function setMenuIndex(index) {\n this.$refs.menu && (this.$refs.menu.listIndex = index);\n },\n setSelectedItems: function setSelectedItems() {\n var _this = this;\n var e_2, _a;\n var selectedItems = [];\n var values = !this.multiple || !Array.isArray(this.internalValue) ? [this.internalValue] : this.internalValue;\n var _loop_1 = function _loop_1(value) {\n var index = this_1.allItems.findIndex(function (v) {\n return _this.valueComparator(_this.getValue(v), _this.getValue(value));\n });\n if (index > -1) {\n selectedItems.push(this_1.allItems[index]);\n }\n };\n var this_1 = this;\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n _loop_1(value);\n }\n } catch (e_2_1) {\n e_2 = { error: e_2_1 };\n } finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n this.selectedItems = selectedItems;\n },\n setValue: function setValue(value) {\n var oldValue = this.internalValue;\n this.internalValue = value;\n value !== oldValue && this.$emit('change', value);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/VSelectList.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VSelect/VSelectList.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_cards.styl */ \"./src/stylus/components/_cards.styl\");\n/* harmony import */ var _stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_cards_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VCheckbox */ \"./src/components/VCheckbox/index.js\");\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VDivider */ \"./src/components/VDivider/index.ts\");\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VSubheader */ \"./src/components/VSubheader/index.ts\");\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VList */ \"./src/components/VList/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __values = undefined && undefined.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\n\n// Components\n\n\n\n\n// Mixins\n\n\n// Helpers\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-select-list',\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n itemAvatar: {\n type: [String, Array, Function],\n default: 'avatar'\n },\n itemDisabled: {\n type: [String, Array, Function],\n default: 'disabled'\n },\n itemText: {\n type: [String, Array, Function],\n default: 'text'\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'value'\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: {\n default: null\n },\n selectedItems: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n parsedItems: function parsedItems() {\n var _this = this;\n return this.selectedItems.map(function (item) {\n return _this.getValue(item);\n });\n },\n tileActiveClass: function tileActiveClass() {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ');\n },\n staticNoDataTile: function staticNoDataTile() {\n var tile = {\n on: {\n mousedown: function mousedown(e) {\n return e.preventDefault();\n } // Prevent onBlur from being called\n }\n };\n return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTile\"], tile, [this.genTileContent(this.noDataText)]);\n }\n },\n methods: {\n genAction: function genAction(item, inputValue) {\n var _this = this;\n var data = {\n on: {\n click: function click(e) {\n e.stopPropagation();\n _this.$emit('select', item);\n }\n }\n };\n return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTileAction\"], data, [this.$createElement(_VCheckbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n color: this.color,\n inputValue: inputValue\n }\n })]);\n },\n genDivider: function genDivider(props) {\n return this.$createElement(_VDivider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { props: props });\n },\n genFilteredText: function genFilteredText(text) {\n text = (text || '').toString();\n if (!this.searchInput || this.noFilter) return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"escapeHTML\"])(text);\n var _a = this.getMaskedCharacters(text),\n start = _a.start,\n middle = _a.middle,\n end = _a.end;\n return \"\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"escapeHTML\"])(start) + this.genHighlight(middle) + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"escapeHTML\"])(end);\n },\n genHeader: function genHeader(props) {\n return this.$createElement(_VSubheader__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { props: props }, props.header);\n },\n genHighlight: function genHighlight(text) {\n return \"<span class=\\\"v-list__tile__mask\\\">\" + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"escapeHTML\"])(text) + \"</span>\";\n },\n getMaskedCharacters: function getMaskedCharacters(text) {\n var searchInput = (this.searchInput || '').toString().toLocaleLowerCase();\n var index = text.toLocaleLowerCase().indexOf(searchInput);\n if (index < 0) return { start: '', middle: text, end: '' };\n var start = text.slice(0, index);\n var middle = text.slice(index, index + searchInput.length);\n var end = text.slice(index + searchInput.length);\n return { start: start, middle: middle, end: end };\n },\n genTile: function genTile(item, disabled, avatar, value) {\n var _this = this;\n if (disabled === void 0) {\n disabled = null;\n }\n if (avatar === void 0) {\n avatar = false;\n }\n if (value === void 0) {\n value = this.hasItem(item);\n }\n if (item === Object(item)) {\n avatar = this.getAvatar(item);\n disabled = disabled !== null ? disabled : this.getDisabled(item);\n }\n var tile = {\n on: {\n mousedown: function mousedown(e) {\n // Prevent onBlur from being called\n e.preventDefault();\n },\n click: function click() {\n return disabled || _this.$emit('select', item);\n }\n },\n props: {\n activeClass: this.tileActiveClass,\n avatar: avatar,\n disabled: disabled,\n ripple: true,\n value: value,\n color: this.color\n }\n };\n if (!this.$scopedSlots.item) {\n return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTile\"], tile, [this.action && !this.hideSelected && this.items.length > 0 ? this.genAction(item, value) : null, this.genTileContent(item)]);\n }\n var parent = this;\n var scopedSlot = this.$scopedSlots.item({ parent: parent, item: item, tile: tile });\n return this.needsTile(scopedSlot) ? this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTile\"], tile, scopedSlot) : scopedSlot;\n },\n genTileContent: function genTileContent(item) {\n var innerHTML = this.genFilteredText(this.getText(item));\n return this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTileContent\"], [this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VListTileTitle\"], {\n domProps: { innerHTML: innerHTML }\n })]);\n },\n hasItem: function hasItem(item) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1;\n },\n needsTile: function needsTile(slot) {\n return slot.length !== 1 || slot[0].componentOptions == null || slot[0].componentOptions.Ctor.options.name !== 'v-list-tile';\n },\n getAvatar: function getAvatar(item) {\n return Boolean(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemAvatar, false));\n },\n getDisabled: function getDisabled(item) {\n return Boolean(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemDisabled, false));\n },\n getText: function getText(item) {\n return String(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemText, item));\n },\n getValue: function getValue(item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getPropertyFromItem\"])(item, this.itemValue, this.getText(item));\n }\n },\n render: function render() {\n var e_1, _a;\n var children = [];\n try {\n for (var _b = __values(this.items), _c = _b.next(); !_c.done; _c = _b.next()) {\n var item = _c.value;\n if (this.hideSelected && this.hasItem(item)) continue;\n if (item == null) children.push(this.genTile(item));else if (item.header) children.push(this.genHeader(item));else if (item.divider) children.push(this.genDivider(item));else children.push(this.genTile(item));\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile);\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item']);\n this.$slots['append-item'] && children.push(this.$slots['append-item']);\n return this.$createElement('div', {\n staticClass: 'v-select-list v-card',\n 'class': this.themeClasses\n }, [this.$createElement(_VList__WEBPACK_IMPORTED_MODULE_4__[\"VList\"], {\n props: {\n dense: this.dense\n }\n }, children)]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSelect/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VSelect/index.js ***!\n \\*****************************************/\n/*! exports provided: VSelect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSelect\", function() { return wrapper; });\n/* harmony import */ var _VSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSelect */ \"./src/components/VSelect/VSelect.js\");\n/* harmony import */ var _VOverflowBtn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VOverflowBtn */ \"./src/components/VOverflowBtn/index.js\");\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VAutocomplete */ \"./src/components/VAutocomplete/index.js\");\n/* harmony import */ var _VCombobox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VCombobox */ \"./src/components/VCombobox/index.js\");\n/* harmony import */ var _util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/rebuildFunctionalSlots */ \"./src/util/rebuildFunctionalSlots.ts\");\n/* harmony import */ var _util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/dedupeModelListeners */ \"./src/util/dedupeModelListeners.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n\n\n\n\n\n\n/* @vue/component */\nvar wrapper = {\n functional: true,\n $_wrapperFor: _VSelect__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n props: {\n // VAutoComplete\n /** @deprecated */\n autocomplete: Boolean,\n /** @deprecated */\n combobox: Boolean,\n multiple: Boolean,\n /** @deprecated */\n tags: Boolean,\n // VOverflowBtn\n /** @deprecated */\n editable: Boolean,\n /** @deprecated */\n overflow: Boolean,\n /** @deprecated */\n segmented: Boolean\n },\n render: function render(h, _a) {\n var props = _a.props,\n data = _a.data,\n slots = _a.slots,\n parent = _a.parent;\n Object(_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(data);\n var children = Object(_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(slots(), h);\n if (props.autocomplete) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select autocomplete>', '<v-autocomplete>', wrapper, parent);\n }\n if (props.combobox) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select combobox>', '<v-combobox>', wrapper, parent);\n }\n if (props.tags) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select tags>', '<v-combobox multiple>', wrapper, parent);\n }\n if (props.overflow) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select overflow>', '<v-overflow-btn>', wrapper, parent);\n }\n if (props.segmented) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select segmented>', '<v-overflow-btn segmented>', wrapper, parent);\n }\n if (props.editable) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('<v-select editable>', '<v-overflow-btn editable>', wrapper, parent);\n }\n data.attrs = data.attrs || {};\n if (props.combobox || props.tags) {\n data.attrs.multiple = props.tags;\n return h(_VCombobox__WEBPACK_IMPORTED_MODULE_3__[\"default\"], data, children);\n } else if (props.autocomplete) {\n data.attrs.multiple = props.multiple;\n return h(_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"default\"], data, children);\n } else if (props.overflow || props.segmented || props.editable) {\n data.attrs.segmented = props.segmented;\n data.attrs.editable = props.editable;\n return h(_VOverflowBtn__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, children);\n } else {\n data.attrs.multiple = props.multiple;\n return h(_VSelect__WEBPACK_IMPORTED_MODULE_0__[\"default\"], data, children);\n }\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (wrapper);\n\n/***/ }),\n\n/***/ \"./src/components/VSheet/VSheet.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VSheet/VSheet.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_sheet_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_sheet.styl */ \"./src/stylus/components/_sheet.styl\");\n/* harmony import */ var _stylus_components_sheet_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_sheet_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/elevatable */ \"./src/mixins/elevatable.ts\");\n/* harmony import */ var _mixins_measurable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/measurable */ \"./src/mixins/measurable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n\n\n// Helpers\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_measurable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]).extend({\n name: 'v-sheet',\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n tile: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-sheet': true, 'v-sheet--tile': this.tile }, this.themeClasses, this.elevationClasses);\n },\n styles: function styles() {\n return this.measurableStyles;\n }\n },\n render: function render(h) {\n var data = {\n class: this.classes,\n style: this.styles,\n on: this.$listeners\n };\n return h(this.tag, this.setBackgroundColor(this.color, data), this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSheet/index.ts\":\n/*!****************************************!*\\\n !*** ./src/components/VSheet/index.ts ***!\n \\****************************************/\n/*! exports provided: VSheet, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSheet */ \"./src/components/VSheet/VSheet.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSheet\", function() { return _VSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSheet__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSlider/VSlider.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VSlider/VSlider.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_sliders_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_sliders.styl */ \"./src/stylus/components/_sliders.styl\");\n/* harmony import */ var _stylus_components_sliders_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_sliders_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Components\n\n// Extensions\n\n// Directives\n\n// Utilities\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VInput__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({\n name: 'v-slider',\n directives: { ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_3__[\"default\"] },\n mixins: [_mixins_loadable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n props: {\n alwaysDirty: Boolean,\n inverseLabel: Boolean,\n label: String,\n min: {\n type: [Number, String],\n default: 0\n },\n max: {\n type: [Number, String],\n default: 100\n },\n step: {\n type: [Number, String],\n default: 1\n },\n ticks: {\n type: [Boolean, String],\n default: false,\n validator: function validator(v) {\n return typeof v === 'boolean' || v === 'always';\n }\n },\n tickLabels: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n tickSize: {\n type: [Number, String],\n default: 1\n },\n thumbColor: {\n type: String,\n default: null\n },\n thumbLabel: {\n type: [Boolean, String],\n default: null,\n validator: function validator(v) {\n return typeof v === 'boolean' || v === 'always';\n }\n },\n thumbSize: {\n type: [Number, String],\n default: 32\n },\n trackColor: {\n type: String,\n default: null\n },\n value: [Number, String]\n },\n data: function data(vm) {\n return {\n app: {},\n isActive: false,\n keyPressed: 0,\n lazyValue: typeof vm.value !== 'undefined' ? vm.value : Number(vm.min),\n oldValue: null\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-input--slider': true,\n 'v-input--slider--ticks': this.showTicks,\n 'v-input--slider--inverse-label': this.inverseLabel,\n 'v-input--slider--ticks-labels': this.tickLabels.length > 0,\n 'v-input--slider--thumb-label': this.thumbLabel || this.$scopedSlots.thumbLabel\n };\n },\n showTicks: function showTicks() {\n return this.tickLabels.length > 0 || !this.disabled && this.stepNumeric && !!this.ticks;\n },\n showThumbLabel: function showThumbLabel() {\n return !this.disabled && (!!this.thumbLabel || this.thumbLabel === '' || this.$scopedSlots['thumb-label']);\n },\n computedColor: function computedColor() {\n if (this.disabled) return null;\n return this.validationState || this.color || 'primary';\n },\n computedTrackColor: function computedTrackColor() {\n return this.disabled ? null : this.trackColor || null;\n },\n computedThumbColor: function computedThumbColor() {\n if (this.disabled || !this.isDirty) return null;\n return this.validationState || this.thumbColor || this.color || 'primary';\n },\n internalValue: {\n get: function get() {\n return this.lazyValue;\n },\n set: function set(val) {\n var _a = this,\n min = _a.min,\n max = _a.max;\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n var value = this.roundValue(Math.min(Math.max(val, min), max));\n if (value === this.lazyValue) return;\n this.lazyValue = value;\n this.$emit('input', value);\n this.validate();\n }\n },\n stepNumeric: function stepNumeric() {\n return this.step > 0 ? parseFloat(this.step) : 0;\n },\n trackFillStyles: function trackFillStyles() {\n var left = this.$vuetify.rtl ? 'auto' : 0;\n var right = this.$vuetify.rtl ? 0 : 'auto';\n var width = this.inputWidth + \"%\";\n if (this.disabled) width = \"calc(\" + this.inputWidth + \"% - 8px)\";\n return {\n transition: this.trackTransition,\n left: left,\n right: right,\n width: width\n };\n },\n trackPadding: function trackPadding() {\n return this.isActive || this.inputWidth > 0 || this.disabled ? 0 : 7;\n },\n trackStyles: function trackStyles() {\n var trackPadding = this.disabled ? \"calc(\" + this.inputWidth + \"% + 8px)\" : this.trackPadding + \"px\";\n var left = this.$vuetify.rtl ? 'auto' : trackPadding;\n var right = this.$vuetify.rtl ? trackPadding : 'auto';\n var width = this.disabled ? \"calc(\" + (100 - this.inputWidth) + \"% - 8px)\" : '100%';\n return {\n transition: this.trackTransition,\n left: left,\n right: right,\n width: width\n };\n },\n tickStyles: function tickStyles() {\n var size = Number(this.tickSize);\n return {\n 'border-width': size + \"px\",\n 'border-radius': size > 1 ? '50%' : null,\n transform: size > 1 ? \"translateX(-\" + size + \"px) translateY(-\" + (size - 1) + \"px)\" : null\n };\n },\n trackTransition: function trackTransition() {\n return this.keyPressed >= 2 ? 'none' : '';\n },\n numTicks: function numTicks() {\n return Math.ceil((this.max - this.min) / this.stepNumeric);\n },\n inputWidth: function inputWidth() {\n return (this.roundValue(this.internalValue) - this.min) / (this.max - this.min) * 100;\n },\n isDirty: function isDirty() {\n return this.internalValue > this.min || this.alwaysDirty;\n }\n },\n watch: {\n min: function min(val) {\n val > this.internalValue && this.$emit('input', parseFloat(val));\n },\n max: function max(val) {\n val < this.internalValue && this.$emit('input', parseFloat(val));\n },\n value: function value(val) {\n this.internalValue = val;\n }\n },\n mounted: function mounted() {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') || Object(_util_console__WEBPACK_IMPORTED_MODULE_5__[\"consoleWarn\"])('Missing v-app or a non-body wrapping element with the [data-app] attribute', this);\n },\n methods: {\n genDefaultSlot: function genDefaultSlot() {\n var children = [this.genLabel()];\n var slider = this.genSlider();\n this.inverseLabel ? children.unshift(slider) : children.push(slider);\n children.push(this.genProgress());\n return children;\n },\n genListeners: function genListeners() {\n return {\n blur: this.onBlur,\n click: this.onSliderClick,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n keyup: this.onKeyUp\n };\n },\n genInput: function genInput() {\n return this.$createElement('input', {\n attrs: __assign({ 'aria-label': this.label, name: this.name, role: 'slider', tabindex: this.disabled ? -1 : this.$attrs.tabindex, value: this.internalValue, readonly: true, 'aria-readonly': String(this.readonly), 'aria-valuemin': this.min, 'aria-valuemax': this.max, 'aria-valuenow': this.internalValue }, this.$attrs),\n on: this.genListeners(),\n ref: 'input'\n });\n },\n genSlider: function genSlider() {\n return this.$createElement('div', {\n staticClass: 'v-slider',\n 'class': {\n 'v-slider--is-active': this.isActive\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur\n }]\n }, this.genChildren());\n },\n genChildren: function genChildren() {\n return [this.genInput(), this.genTrackContainer(), this.genSteps(), this.genThumbContainer(this.internalValue, this.inputWidth, this.isFocused || this.isActive, this.onThumbMouseDown)];\n },\n genSteps: function genSteps() {\n var _this = this;\n if (!this.step || !this.showTicks) return null;\n var ticks = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"createRange\"])(this.numTicks + 1).map(function (i) {\n var children = [];\n if (_this.tickLabels[i]) {\n children.push(_this.$createElement('span', _this.tickLabels[i]));\n }\n return _this.$createElement('span', {\n key: i,\n staticClass: 'v-slider__ticks',\n class: {\n 'v-slider__ticks--always-show': _this.ticks === 'always' || _this.tickLabels.length > 0\n },\n style: __assign({}, _this.tickStyles, { left: i * (100 / _this.numTicks) + \"%\" })\n }, children);\n });\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container'\n }, ticks);\n },\n genThumb: function genThumb() {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb'\n }));\n },\n genThumbContainer: function genThumbContainer(value, valueWidth, isActive, onDrag) {\n var children = [this.genThumb()];\n var thumbLabelContent = this.getLabel(value);\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent));\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-container',\n 'class': {\n 'v-slider__thumb-container--is-active': isActive,\n 'v-slider__thumb-container--show-label': this.showThumbLabel\n },\n style: {\n transition: this.trackTransition,\n left: (this.$vuetify.rtl ? 100 - valueWidth : valueWidth) + \"%\"\n },\n on: {\n touchstart: onDrag,\n mousedown: onDrag\n }\n }), children);\n },\n genThumbLabel: function genThumbLabel(content) {\n var size = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"convertToUnit\"])(this.thumbSize);\n return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_1__[\"VScaleTransition\"], {\n props: { origin: 'bottom center' }\n }, [this.$createElement('div', {\n staticClass: 'v-slider__thumb-label__container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always'\n }]\n }, [this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size\n }\n }), [content])])]);\n },\n genTrackContainer: function genTrackContainer() {\n var children = [this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track',\n style: this.trackStyles\n })), this.$createElement('div', this.setBackgroundColor(this.computedColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles\n }))];\n return this.$createElement('div', {\n staticClass: 'v-slider__track__container',\n ref: 'track'\n }, children);\n },\n getLabel: function getLabel(value) {\n return this.$scopedSlots['thumb-label'] ? this.$scopedSlots['thumb-label']({ value: value }) : this.$createElement('span', value);\n },\n onBlur: function onBlur(e) {\n if (this.keyPressed === 2) return;\n this.isActive = false;\n this.isFocused = false;\n this.$emit('blur', e);\n },\n onFocus: function onFocus(e) {\n this.isFocused = true;\n this.$emit('focus', e);\n },\n onThumbMouseDown: function onThumbMouseDown(e) {\n this.oldValue = this.internalValue;\n this.keyPressed = 2;\n var options = { passive: true };\n this.isActive = true;\n this.isFocused = false;\n if ('touches' in e) {\n this.app.addEventListener('touchmove', this.onMouseMove, options);\n Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"addOnceEventListener\"])(this.app, 'touchend', this.onSliderMouseUp);\n } else {\n this.app.addEventListener('mousemove', this.onMouseMove, options);\n Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"addOnceEventListener\"])(this.app, 'mouseup', this.onSliderMouseUp);\n }\n this.$emit('start', this.internalValue);\n },\n onSliderMouseUp: function onSliderMouseUp() {\n this.keyPressed = 0;\n var options = { passive: true };\n this.isActive = false;\n this.isFocused = false;\n this.app.removeEventListener('touchmove', this.onMouseMove, options);\n this.app.removeEventListener('mousemove', this.onMouseMove, options);\n this.$emit('end', this.internalValue);\n if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue);\n }\n },\n onMouseMove: function onMouseMove(e) {\n var _a = this.parseMouseMove(e),\n value = _a.value,\n isInsideTrack = _a.isInsideTrack;\n if (isInsideTrack) {\n this.setInternalValue(value);\n }\n },\n onKeyDown: function onKeyDown(e) {\n if (this.disabled || this.readonly) return;\n var value = this.parseKeyDown(e);\n if (value == null) return;\n this.setInternalValue(value);\n this.$emit('change', value);\n },\n onKeyUp: function onKeyUp() {\n this.keyPressed = 0;\n },\n onSliderClick: function onSliderClick(e) {\n this.isFocused = true;\n this.onMouseMove(e);\n this.$emit('change', this.internalValue);\n },\n parseMouseMove: function parseMouseMove(e) {\n var _a = this.$refs.track.getBoundingClientRect(),\n offsetLeft = _a.left,\n trackWidth = _a.width;\n var clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;\n // It is possible for left to be NaN, force to number\n var left = Math.min(Math.max((clientX - offsetLeft) / trackWidth, 0), 1) || 0;\n if (this.$vuetify.rtl) left = 1 - left;\n var isInsideTrack = clientX >= offsetLeft - 8 && clientX <= offsetLeft + trackWidth + 8;\n var value = parseFloat(this.min) + left * (this.max - this.min);\n return { value: value, isInsideTrack: isInsideTrack };\n },\n parseKeyDown: function parseKeyDown(e, value) {\n if (value === void 0) {\n value = this.internalValue;\n }\n if (this.disabled) return;\n var pageup = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].pageup,\n pagedown = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].pagedown,\n end = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].end,\n home = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].home,\n left = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].left,\n right = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].right,\n down = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].down,\n up = _util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"keyCodes\"].up;\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return;\n e.preventDefault();\n var step = this.stepNumeric || 1;\n var steps = (this.max - this.min) / step;\n if ([left, right, down, up].includes(e.keyCode)) {\n this.keyPressed += 1;\n var increase = this.$vuetify.rtl ? [left, up] : [right, up];\n var direction = increase.includes(e.keyCode) ? 1 : -1;\n var multiplier = e.shiftKey ? 3 : e.ctrlKey ? 2 : 1;\n value = value + direction * step * multiplier;\n } else if (e.keyCode === home) {\n value = parseFloat(this.min);\n } else if (e.keyCode === end) {\n value = parseFloat(this.max);\n } else /* if (e.keyCode === keyCodes.pageup || e.keyCode === pagedown) */{\n // Page up/down\n var direction = e.keyCode === pagedown ? 1 : -1;\n value = value - direction * step * (steps > 100 ? steps / 10 : 10);\n }\n return value;\n },\n roundValue: function roundValue(value) {\n if (!this.stepNumeric) return value;\n // Format input value using the same number\n // of decimals places as in the step prop\n var trimmedStep = this.step.toString().trim();\n var decimals = trimmedStep.indexOf('.') > -1 ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;\n var offset = this.min % this.stepNumeric;\n var newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset;\n return parseFloat(Math.max(Math.min(newValue, this.max), this.min).toFixed(decimals));\n },\n setInternalValue: function setInternalValue(value) {\n this.internalValue = value;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSlider/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VSlider/index.js ***!\n \\*****************************************/\n/*! exports provided: VSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSlider */ \"./src/components/VSlider/VSlider.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlider\", function() { return _VSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSlider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSnackbar/VSnackbar.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VSnackbar/VSnackbar.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_snackbars_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_snackbars.styl */ \"./src/stylus/components/_snackbars.styl\");\n/* harmony import */ var _stylus_components_snackbars_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_snackbars_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object(_mixins_positionable__WEBPACK_IMPORTED_MODULE_3__[\"factory\"])(['absolute', 'top', 'bottom', 'left', 'right'])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n props: {\n autoHeight: Boolean,\n multiLine: Boolean,\n // TODO: change this to closeDelay to match other API in delayable.js\n timeout: {\n type: Number,\n default: 6000\n },\n vertical: Boolean\n },\n data: function data() {\n return {\n activeTimeout: -1\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-snack--active': this.isActive,\n 'v-snack--absolute': this.absolute,\n 'v-snack--auto-height': this.autoHeight,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical\n };\n }\n },\n watch: {\n isActive: function isActive() {\n this.setTimeout();\n }\n },\n mounted: function mounted() {\n this.setTimeout();\n },\n methods: {\n setTimeout: function setTimeout() {\n var _this = this;\n window.clearTimeout(this.activeTimeout);\n if (this.isActive && this.timeout) {\n this.activeTimeout = window.setTimeout(function () {\n _this.isActive = false;\n }, this.timeout);\n }\n }\n },\n render: function render(h) {\n return h('transition', {\n attrs: { name: 'v-snack-transition' }\n }, this.isActive && [h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n on: this.$listeners\n }, [h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-snack__wrapper'\n }), [h('div', {\n staticClass: 'v-snack__content'\n }, this.$slots.default)])])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSnackbar/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VSnackbar/index.ts ***!\n \\*******************************************/\n/*! exports provided: VSnackbar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSnackbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSnackbar */ \"./src/components/VSnackbar/VSnackbar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSnackbar\", function() { return _VSnackbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSnackbar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/VSparkline.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VSparkline/VSparkline.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _helpers_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/core */ \"./src/components/VSparkline/helpers/core.ts\");\n/* harmony import */ var _helpers_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/path */ \"./src/components/VSparkline/helpers/path.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Mixins\n\n// Utilities\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n name: 'VSparkline',\n props: {\n autoDraw: Boolean,\n autoDrawDuration: {\n type: Number,\n default: 2000\n },\n autoDrawEasing: {\n type: String,\n default: 'ease'\n },\n autoLineWidth: {\n type: Boolean,\n default: false\n },\n color: {\n type: String,\n default: 'primary'\n },\n fill: {\n type: Boolean,\n default: false\n },\n gradient: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n gradientDirection: {\n type: String,\n validator: function validator(val) {\n return ['top', 'bottom', 'left', 'right'].includes(val);\n },\n default: 'top'\n },\n height: {\n type: [String, Number],\n default: 75\n },\n labels: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n lineWidth: {\n type: [String, Number],\n default: 4\n },\n padding: {\n type: [String, Number],\n default: 8\n },\n smooth: {\n type: [Boolean, Number, String],\n default: false\n },\n showLabels: Boolean,\n type: {\n type: String,\n default: 'trend',\n validator: function validator(val) {\n return ['trend', 'bar'].includes(val);\n }\n },\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n width: {\n type: [Number, String],\n default: 300\n },\n labelSize: {\n type: [Number, String],\n default: 7\n }\n },\n data: function data() {\n return {\n lastLength: 0\n };\n },\n computed: {\n parsedPadding: function parsedPadding() {\n return Number(this.padding);\n },\n parsedWidth: function parsedWidth() {\n return Number(this.width);\n },\n totalBars: function totalBars() {\n return this.value.length;\n },\n _lineWidth: function _lineWidth() {\n if (this.autoLineWidth && this.type !== 'trend') {\n var totalPadding = this.parsedPadding * (this.totalBars + 1);\n return (this.parsedWidth - totalPadding) / this.totalBars;\n } else {\n return Number(this.lineWidth) || 4;\n }\n },\n boundary: function boundary() {\n var height = Number(this.height);\n return {\n minX: this.parsedPadding,\n minY: this.parsedPadding,\n maxX: this.parsedWidth - this.parsedPadding,\n maxY: height - this.parsedPadding\n };\n },\n hasLabels: function hasLabels() {\n return Boolean(this.showLabels || this.labels.length > 0 || this.$scopedSlots.label);\n },\n parsedLabels: function parsedLabels() {\n var labels = [];\n var points = this.points;\n var len = points.length;\n for (var i = 0; labels.length < len; i++) {\n var item = points[i];\n var value = this.labels[i];\n if (!value) {\n value = item === Object(item) ? item.value : item;\n }\n labels.push(__assign({}, item, { value: String(value) }));\n }\n return labels;\n },\n points: function points() {\n return Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genPoints\"])(this.value.slice(), this.boundary, this.type);\n },\n textY: function textY() {\n return this.boundary.maxY + 6;\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n var _this = this;\n this.$nextTick(function () {\n if (!_this.autoDraw || _this.type === 'bar') return;\n var path = _this.$refs.path;\n var length = path.getTotalLength();\n if (!_this.fill) {\n path.style.transition = 'none';\n path.style.strokeDasharray = length + ' ' + length;\n path.style.strokeDashoffset = Math.abs(length - (_this.lastLength || 0)).toString();\n path.getBoundingClientRect();\n path.style.transition = \"stroke-dashoffset \" + _this.autoDrawDuration + \"ms \" + _this.autoDrawEasing;\n path.style.strokeDashoffset = '0';\n } else {\n path.style.transformOrigin = 'bottom center';\n path.style.transition = 'none';\n path.style.transform = \"scaleY(0)\";\n path.getBoundingClientRect();\n path.style.transition = \"transform \" + _this.autoDrawDuration + \"ms \" + _this.autoDrawEasing;\n path.style.transform = \"scaleY(1)\";\n }\n _this.lastLength = length;\n });\n }\n }\n },\n methods: {\n genGradient: function genGradient() {\n var _this = this;\n var gradientDirection = this.gradientDirection;\n var gradient = this.gradient.slice();\n // Pushes empty string to force\n // a fallback to currentColor\n if (!gradient.length) gradient.push('');\n var len = Math.max(gradient.length - 1, 1);\n var stops = gradient.reverse().map(function (color, index) {\n return _this.$createElement('stop', {\n attrs: {\n offset: index / len,\n 'stop-color': color || _this.color || 'currentColor'\n }\n });\n });\n return this.$createElement('defs', [this.$createElement('linearGradient', {\n attrs: {\n id: this._uid,\n x1: +(gradientDirection === 'left'),\n y1: +(gradientDirection === 'top'),\n x2: +(gradientDirection === 'right'),\n y2: +(gradientDirection === 'bottom')\n }\n }, stops)]);\n },\n genG: function genG(children) {\n return this.$createElement('g', {\n style: {\n fontSize: '8',\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: this.color || 'currentColor'\n }\n }, children);\n },\n genLabels: function genLabels() {\n if (!this.hasLabels) return undefined;\n return this.genG(this.parsedLabels.map(this.genText));\n },\n genPath: function genPath() {\n var radius = this.smooth === true ? 8 : Number(this.smooth);\n return this.$createElement('path', {\n attrs: {\n id: this._uid,\n d: Object(_helpers_path__WEBPACK_IMPORTED_MODULE_3__[\"genPath\"])(this.points.slice(), radius, this.fill, Number(this.height)),\n fill: this.fill ? \"url(#\" + this._uid + \")\" : 'none',\n stroke: this.fill ? 'none' : \"url(#\" + this._uid + \")\"\n },\n ref: 'path'\n });\n },\n genText: function genText(item, index) {\n var children = this.$scopedSlots.label ? this.$scopedSlots.label({ index: index, value: item.value }) : item.value;\n return this.$createElement('text', {\n attrs: {\n x: item.x,\n y: this.textY\n }\n }, [children]);\n },\n genBar: function genBar() {\n if (!this.value || this.totalBars < 2) return undefined;\n var _a = this,\n width = _a.width,\n height = _a.height,\n parsedPadding = _a.parsedPadding,\n _lineWidth = _a._lineWidth;\n var viewWidth = width || this.totalBars * parsedPadding * 2;\n var viewHeight = height || 75;\n var boundary = {\n minX: parsedPadding,\n minY: parsedPadding,\n maxX: Number(viewWidth) - parsedPadding,\n maxY: Number(viewHeight) - parsedPadding\n };\n var props = __assign({}, this.$props);\n props.points = Object(_helpers_core__WEBPACK_IMPORTED_MODULE_2__[\"genPoints\"])(this.value, boundary, this.type);\n var totalWidth = boundary.maxX / (props.points.length - 1);\n props.boundary = boundary;\n props.lineWidth = _lineWidth || totalWidth - Number(parsedPadding || 5);\n props.offsetX = 0;\n if (!this.autoLineWidth) {\n props.offsetX = boundary.maxX / this.totalBars / 2 - boundary.minX;\n }\n return this.$createElement('svg', {\n attrs: {\n width: '100%',\n height: '25%',\n viewBox: \"0 0 \" + viewWidth + \" \" + viewHeight\n }\n }, [this.genGradient(), this.genClipPath(props.offsetX, props.lineWidth, 'sparkline-bar-' + this._uid), this.hasLabels ? this.genBarLabels(props) : undefined, this.$createElement('g', {\n attrs: {\n transform: \"scale(1,-1) translate(0,-\" + boundary.maxY + \")\",\n 'clip-path': \"url(#sparkline-bar-\" + this._uid + \"-clip)\",\n fill: \"url(#\" + this._uid + \")\"\n }\n }, [this.$createElement('rect', {\n attrs: {\n x: 0,\n y: 0,\n width: viewWidth,\n height: viewHeight\n }\n })])]);\n },\n genClipPath: function genClipPath(offsetX, lineWidth, id) {\n var _this = this;\n var maxY = this.boundary.maxY;\n var rounding = typeof this.smooth === 'number' ? this.smooth : this.smooth ? 2 : 0;\n return this.$createElement('clipPath', {\n attrs: {\n id: id + \"-clip\"\n }\n }, this.points.map(function (item) {\n return _this.$createElement('rect', {\n attrs: {\n x: item.x + offsetX,\n y: 0,\n width: lineWidth,\n height: Math.max(maxY - item.y, 0),\n rx: rounding,\n ry: rounding\n }\n }, [_this.autoDraw ? _this.$createElement('animate', {\n attrs: {\n attributeName: 'height',\n from: 0,\n to: maxY - item.y,\n dur: _this.autoDrawDuration + \"ms\",\n fill: 'freeze'\n }\n }) : undefined]);\n }));\n },\n genBarLabels: function genBarLabels(props) {\n var _this = this;\n var offsetX = props.offsetX || 0;\n var children = props.points.map(function (item) {\n return _this.$createElement('text', {\n attrs: {\n x: item.x + offsetX + _this._lineWidth / 2,\n y: props.boundary.maxY + (Number(_this.labelSize) || 7),\n 'font-size': Number(_this.labelSize) || 7\n }\n }, item.value.toString());\n });\n return this.genG(children);\n },\n genTrend: function genTrend() {\n return this.$createElement('svg', this.setTextColor(this.color, {\n attrs: {\n 'stroke-width': this._lineWidth || 1,\n width: '100%',\n height: '25%',\n viewBox: \"0 0 \" + this.width + \" \" + this.height\n }\n }), [this.genGradient(), this.genLabels(), this.genPath()]);\n }\n },\n render: function render(h) {\n if (this.totalBars < 2) return undefined;\n return this.type === 'trend' ? this.genTrend() : this.genBar();\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/core.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VSparkline/helpers/core.ts ***!\n \\***************************************************/\n/*! exports provided: genPoints */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genPoints\", function() { return genPoints; });\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\nfunction genPoints(points, boundary, type) {\n var minX = boundary.minX,\n minY = boundary.minY,\n maxX = boundary.maxX,\n maxY = boundary.maxY;\n var normalisedPoints = points.map(function (item) {\n return typeof item === 'number' ? item : item.value;\n });\n var totalPoints = normalisedPoints.length;\n var maxValue = Math.max.apply(Math, __spread(normalisedPoints)) + 1;\n var minValue = Math.min.apply(Math, __spread(normalisedPoints));\n if (minValue) minValue -= 1;\n var gridX = (maxX - minX) / (totalPoints - 1);\n if (type === 'bar') gridX = maxX / totalPoints;\n var gridY = (maxY - minY) / (maxValue - minValue);\n return normalisedPoints.map(function (value, index) {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY + +(index === totalPoints - 1) * 0.00001 - +(index === 0) * 0.00001,\n value: value\n };\n });\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/math.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VSparkline/helpers/math.ts ***!\n \\***************************************************/\n/*! exports provided: checkCollinear, getDistance, moveTo */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkCollinear\", function() { return checkCollinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDistance\", function() { return getDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\nfunction int(value) {\n return parseInt(value, 10);\n}\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nfunction checkCollinear(p0, p1, p2) {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);\n}\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction moveTo(to, from, radius) {\n var vector = { x: to.x - from.x, y: to.y - from.y };\n var length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n var unitVector = { x: vector.x / length, y: vector.y / length };\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius\n };\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/helpers/path.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VSparkline/helpers/path.ts ***!\n \\***************************************************/\n/*! exports provided: genPath */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genPath\", function() { return genPath; });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math */ \"./src/components/VSparkline/helpers/math.ts\");\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nfunction genPath(points, radius, fill, height) {\n if (fill === void 0) {\n fill = false;\n }\n if (height === void 0) {\n height = 75;\n }\n var start = points.shift();\n var end = points[points.length - 1];\n return (fill ? \"M\" + start.x + \" \" + height + \" L\" + start.x + \" \" + start.y : \"M\" + start.x + \" \" + start.y) + points.map(function (point, index) {\n var next = points[index + 1];\n var prev = points[index - 1] || start;\n var isCollinear = next && Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"checkCollinear\"])(next, point, prev);\n if (!next || isCollinear) {\n return \"L\" + point.x + \" \" + point.y;\n }\n var threshold = Math.min(Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"getDistance\"])(prev, point), Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"getDistance\"])(next, point));\n var isTooCloseForRadius = threshold / 2 < radius;\n var radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;\n var before = Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"moveTo\"])(prev, point, radiusForPoint);\n var after = Object(_math__WEBPACK_IMPORTED_MODULE_0__[\"moveTo\"])(next, point, radiusForPoint);\n return \"L\" + before.x + \" \" + before.y + \"S\" + point.x + \" \" + point.y + \" \" + after.x + \" \" + after.y;\n }).join('') + (fill ? \"L\" + end.x + \" \" + height + \" Z\" : '');\n}\n\n/***/ }),\n\n/***/ \"./src/components/VSparkline/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VSparkline/index.ts ***!\n \\********************************************/\n/*! exports provided: VSparkline, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSparkline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSparkline */ \"./src/components/VSparkline/VSparkline.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSparkline\", function() { return _VSparkline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSparkline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSpeedDial/VSpeedDial.js\":\n/*!*************************************************!*\\\n !*** ./src/components/VSpeedDial/VSpeedDial.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_speed_dial_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_speed-dial.styl */ \"./src/stylus/components/_speed-dial.styl\");\n/* harmony import */ var _stylus_components_speed_dial_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_speed_dial_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _mixins_positionable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/transitionable */ \"./src/mixins/transitionable.ts\");\n/* harmony import */ var _directives_click_outside__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../directives/click-outside */ \"./src/directives/click-outside.ts\");\n\n\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-speed-dial',\n directives: { ClickOutside: _directives_click_outside__WEBPACK_IMPORTED_MODULE_4__[\"default\"] },\n mixins: [_mixins_positionable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n props: {\n direction: {\n type: String,\n default: 'top',\n validator: function validator(val) {\n return ['top', 'right', 'bottom', 'left'].includes(val);\n }\n },\n openOnHover: Boolean,\n transition: {\n type: String,\n default: 'scale-transition'\n }\n },\n computed: {\n classes: function classes() {\n var _a;\n return _a = {\n 'v-speed-dial': true,\n 'v-speed-dial--top': this.top,\n 'v-speed-dial--right': this.right,\n 'v-speed-dial--bottom': this.bottom,\n 'v-speed-dial--left': this.left,\n 'v-speed-dial--absolute': this.absolute,\n 'v-speed-dial--fixed': this.fixed\n }, _a[\"v-speed-dial--direction-\" + this.direction] = true, _a;\n }\n },\n render: function render(h) {\n var _this = this;\n var children = [];\n var data = {\n 'class': this.classes,\n directives: [{\n name: 'click-outside',\n value: function value() {\n return _this.isActive = false;\n }\n }],\n on: {\n click: function click() {\n return _this.isActive = !_this.isActive;\n }\n }\n };\n if (this.openOnHover) {\n data.on.mouseenter = function () {\n return _this.isActive = true;\n };\n data.on.mouseleave = function () {\n return _this.isActive = false;\n };\n }\n if (this.isActive) {\n var btnCount_1 = 0;\n children = (this.$slots.default || []).map(function (b, i) {\n if (b.tag && typeof b.componentOptions !== 'undefined' && b.componentOptions.Ctor.options.name === 'v-btn') {\n btnCount_1++;\n return h('div', {\n style: {\n transitionDelay: btnCount_1 * 0.05 + 's'\n },\n key: i\n }, [b]);\n } else {\n b.key = i;\n return b;\n }\n });\n }\n var list = h('transition-group', {\n 'class': 'v-speed-dial__list',\n props: {\n name: this.transition,\n mode: this.mode,\n origin: this.origin,\n tag: 'div'\n }\n }, children);\n return h('div', data, [this.$slots.activator, list]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSpeedDial/index.js\":\n/*!********************************************!*\\\n !*** ./src/components/VSpeedDial/index.js ***!\n \\********************************************/\n/*! exports provided: VSpeedDial, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSpeedDial__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSpeedDial */ \"./src/components/VSpeedDial/VSpeedDial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpeedDial\", function() { return _VSpeedDial__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSpeedDial__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepper.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VStepper/VStepper.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_steppers_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_steppers.styl */ \"./src/stylus/components/_steppers.styl\");\n/* harmony import */ var _stylus_components_steppers_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_steppers_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n// Util\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__[\"provide\"])('stepper'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-stepper',\n provide: function provide() {\n return {\n stepClick: this.stepClick,\n isVertical: this.vertical\n };\n },\n props: {\n nonLinear: Boolean,\n altLabels: Boolean,\n vertical: Boolean,\n value: [Number, String]\n },\n data: function data() {\n return {\n inputValue: null,\n isBooted: false,\n steps: [],\n content: [],\n isReverse: false\n };\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-stepper': true, 'v-stepper--is-booted': this.isBooted, 'v-stepper--vertical': this.vertical, 'v-stepper--alt-labels': this.altLabels, 'v-stepper--non-linear': this.nonLinear }, this.themeClasses);\n }\n },\n watch: {\n inputValue: function inputValue(val, prev) {\n this.isReverse = Number(val) < Number(prev);\n for (var index = this.steps.length; --index >= 0;) {\n this.steps[index].toggle(this.inputValue);\n }\n for (var index = this.content.length; --index >= 0;) {\n this.content[index].toggle(this.inputValue, this.isReverse);\n }\n this.$emit('input', this.inputValue);\n prev && (this.isBooted = true);\n },\n value: function value() {\n var _this = this;\n this.$nextTick(function () {\n return _this.inputValue = _this.value;\n });\n }\n },\n mounted: function mounted() {\n this.inputValue = this.value || this.steps[0].step || 1;\n },\n methods: {\n register: function register(item) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps.push(item);\n } else if (item.$options.name === 'v-stepper-content') {\n item.isVertical = this.vertical;\n this.content.push(item);\n }\n },\n unregister: function unregister(item) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps = this.steps.filter(function (i) {\n return i !== item;\n });\n } else if (item.$options.name === 'v-stepper-content') {\n item.isVertical = this.vertical;\n this.content = this.content.filter(function (i) {\n return i !== item;\n });\n }\n },\n stepClick: function stepClick(step) {\n var _this = this;\n this.$nextTick(function () {\n return _this.inputValue = step;\n });\n }\n },\n render: function render(h) {\n return h('div', {\n 'class': this.classes\n }, this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepperContent.ts\":\n/*!****************************************************!*\\\n !*** ./src/components/VStepper/VStepperContent.ts ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Components\n\n// Mixins\n\n// Helpers\n\n// Util\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__[\"inject\"])('stepper', 'v-stepper-content', 'v-stepper')\n/* @vue/component */\n).extend({\n name: 'v-stepper-content',\n inject: {\n isVerticalProvided: {\n from: 'isVertical'\n }\n },\n props: {\n step: {\n type: [Number, String],\n required: true\n }\n },\n data: function data() {\n return {\n height: 0,\n // Must be null to allow\n // previous comparison\n isActive: null,\n isReverse: false,\n isVertical: this.isVerticalProvided\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-stepper__content': true\n };\n },\n computedTransition: function computedTransition() {\n return this.isReverse ? _transitions__WEBPACK_IMPORTED_MODULE_0__[\"VTabReverseTransition\"] : _transitions__WEBPACK_IMPORTED_MODULE_0__[\"VTabTransition\"];\n },\n styles: function styles() {\n if (!this.isVertical) return {};\n return {\n height: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"convertToUnit\"])(this.height)\n };\n },\n wrapperClasses: function wrapperClasses() {\n return {\n 'v-stepper__wrapper': true\n };\n }\n },\n watch: {\n isActive: function isActive(current, previous) {\n // If active and the previous state\n // was null, is just booting up\n if (current && previous == null) {\n this.height = 'auto';\n return;\n }\n if (!this.isVertical) return;\n if (this.isActive) this.enter();else this.leave();\n }\n },\n mounted: function mounted() {\n this.$refs.wrapper.addEventListener('transitionend', this.onTransition, false);\n this.stepper && this.stepper.register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.$refs.wrapper.removeEventListener('transitionend', this.onTransition, false);\n this.stepper && this.stepper.unregister(this);\n },\n methods: {\n onTransition: function onTransition(e) {\n if (!this.isActive || e.propertyName !== 'height') return;\n this.height = 'auto';\n },\n enter: function enter() {\n var _this = this;\n var scrollHeight = 0;\n // Render bug with height\n requestAnimationFrame(function () {\n scrollHeight = _this.$refs.wrapper.scrollHeight;\n });\n this.height = 0;\n // Give the collapsing element time to collapse\n setTimeout(function () {\n return _this.isActive && (_this.height = scrollHeight || 'auto');\n }, 450);\n },\n leave: function leave() {\n var _this = this;\n this.height = this.$refs.wrapper.clientHeight;\n setTimeout(function () {\n return _this.height = 0;\n }, 10);\n },\n toggle: function toggle(step, reverse) {\n this.isActive = step.toString() === this.step.toString();\n this.isReverse = reverse;\n }\n },\n render: function render(h) {\n var contentData = {\n 'class': this.classes\n };\n var wrapperData = {\n 'class': this.wrapperClasses,\n style: this.styles,\n ref: 'wrapper'\n };\n if (!this.isVertical) {\n contentData.directives = [{\n name: 'show',\n value: this.isActive\n }];\n }\n var wrapper = h('div', wrapperData, [this.$slots.default]);\n var content = h('div', contentData, [wrapper]);\n return h(this.computedTransition, {\n on: this.$listeners\n }, [content]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/VStepperStep.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VStepper/VStepperStep.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Components\n\n// Mixins\n\n\n// Directives\n\n// Util\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__[\"inject\"])('stepper', 'v-stepper-step', 'v-stepper')\n/* @vue/component */\n).extend({\n name: 'v-stepper-step',\n directives: { Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_3__[\"default\"] },\n inject: ['stepClick'],\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$vuetify.icons.complete'\n },\n editIcon: {\n type: String,\n default: '$vuetify.icons.edit'\n },\n errorIcon: {\n type: String,\n default: '$vuetify.icons.error'\n },\n editable: Boolean,\n rules: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n step: [Number, String]\n },\n data: function data() {\n return {\n isActive: false,\n isInactive: true\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-stepper__step': true,\n 'v-stepper__step--active': this.isActive,\n 'v-stepper__step--editable': this.editable,\n 'v-stepper__step--inactive': this.isInactive,\n 'v-stepper__step--error': this.hasError,\n 'v-stepper__step--complete': this.complete,\n 'error--text': this.hasError\n };\n },\n hasError: function hasError() {\n return this.rules.some(function (validate) {\n return validate() !== true;\n });\n }\n },\n mounted: function mounted() {\n this.stepper && this.stepper.register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.stepper && this.stepper.unregister(this);\n },\n methods: {\n click: function click(e) {\n e.stopPropagation();\n this.$emit('click', e);\n if (this.editable) {\n this.stepClick(this.step);\n }\n },\n toggle: function toggle(step) {\n this.isActive = step.toString() === this.step.toString();\n this.isInactive = Number(step) < Number(this.step);\n }\n },\n render: function render(h) {\n var data = {\n 'class': this.classes,\n directives: [{\n name: 'ripple',\n value: this.editable\n }],\n on: { click: this.click }\n };\n var stepContent;\n if (this.hasError) {\n stepContent = [h(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}, this.errorIcon)];\n } else if (this.complete) {\n if (this.editable) {\n stepContent = [h(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}, this.editIcon)];\n } else {\n stepContent = [h(_VIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}, this.completeIcon)];\n }\n } else {\n stepContent = String(this.step);\n }\n var color = !this.hasError && (this.complete || this.isActive) ? this.color : false;\n var step = h('span', this.setBackgroundColor(color, {\n staticClass: 'v-stepper__step__step'\n }), stepContent);\n var label = h('div', {\n staticClass: 'v-stepper__label'\n }, this.$slots.default);\n return h('div', data, [step, label]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VStepper/index.ts\":\n/*!******************************************!*\\\n !*** ./src/components/VStepper/index.ts ***!\n \\******************************************/\n/*! exports provided: VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VStepperHeader\", function() { return VStepperHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VStepperItems\", function() { return VStepperItems; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VStepper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VStepper */ \"./src/components/VStepper/VStepper.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepper\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VStepperStep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VStepperStep */ \"./src/components/VStepper/VStepperStep.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperStep\", function() { return _VStepperStep__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VStepperContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VStepperContent */ \"./src/components/VStepper/VStepperContent.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperContent\", function() { return _VStepperContent__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\nvar VStepperHeader = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-stepper__header');\nvar VStepperItems = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-stepper__items');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VStepper: _VStepper__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VStepperContent: _VStepperContent__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VStepperStep: _VStepperStep__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VStepperHeader: VStepperHeader,\n VStepperItems: VStepperItems\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSubheader/VSubheader.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VSubheader/VSubheader.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_subheaders_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_subheaders.styl */ \"./src/stylus/components/_subheaders.styl\");\n/* harmony import */ var _stylus_components_subheaders_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_subheaders_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-subheader',\n props: {\n inset: Boolean\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-subheader',\n class: __assign({ 'v-subheader--inset': this.inset }, this.themeClasses),\n attrs: this.$attrs,\n on: this.$listeners\n }, this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSubheader/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VSubheader/index.ts ***!\n \\********************************************/\n/*! exports provided: VSubheader, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSubheader */ \"./src/components/VSubheader/VSubheader.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSubheader\", function() { return _VSubheader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSubheader__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSwitch/VSwitch.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VSwitch/VSwitch.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_selection-controls.styl */ \"./src/stylus/components/_selection-controls.styl\");\n/* harmony import */ var _stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_selection_controls_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _stylus_components_switch_styl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../stylus/components/_switch.styl */ \"./src/stylus/components/_switch.styl\");\n/* harmony import */ var _stylus_components_switch_styl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_switch_styl__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_selectable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/selectable */ \"./src/mixins/selectable.js\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch.ts\");\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../VProgressCircular/VProgressCircular */ \"./src/components/VProgressCircular/VProgressCircular.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n// Mixins\n\n// Directives\n\n// Components\n\n\n// Helpers\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-switch',\n directives: { Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_3__[\"default\"] },\n mixins: [_mixins_selectable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n loading: {\n type: [Boolean, String],\n default: false\n }\n },\n computed: {\n classes: function classes() {\n return {\n 'v-input--selection-controls v-input--switch': true\n };\n },\n switchData: function switchData() {\n return this.setTextColor(this.loading ? undefined : this.computedColor, {\n class: this.themeClasses\n });\n }\n },\n methods: {\n genDefaultSlot: function genDefaultSlot() {\n return [this.genSwitch(), this.genLabel()];\n },\n genSwitch: function genSwitch() {\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.genInput('checkbox', this.$attrs), this.genRipple(this.setTextColor(this.computedColor, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight\n }\n }]\n })), this.$createElement('div', __assign({ staticClass: 'v-input--switch__track' }, this.switchData)), this.$createElement('div', __assign({ staticClass: 'v-input--switch__thumb' }, this.switchData), [this.genProgress()])]);\n },\n genProgress: function genProgress() {\n return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_4__[\"VFabTransition\"], {}, [this.loading === false ? null : this.$slots.progress || this.$createElement(_VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n props: {\n color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n size: 16,\n width: 2,\n indeterminate: true\n }\n })]);\n },\n onSwipeLeft: function onSwipeLeft() {\n if (this.isActive) this.onChange();\n },\n onSwipeRight: function onSwipeRight() {\n if (!this.isActive) this.onChange();\n },\n onKeydown: function onKeydown(e) {\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].left && this.isActive || e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"keyCodes\"].right && !this.isActive) this.onChange();\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VSwitch/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/VSwitch/index.js ***!\n \\*****************************************/\n/*! exports provided: VSwitch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSwitch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSwitch */ \"./src/components/VSwitch/VSwitch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSwitch\", function() { return _VSwitch__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSwitch__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VSystemBar/VSystemBar.ts\":\n/*!*************************************************!*\\\n !*** ./src/components/VSystemBar/VSystemBar.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_system_bars_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_system-bars.styl */ \"./src/stylus/components/_system-bars.styl\");\n/* harmony import */ var _stylus_components_system_bars_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_system_bars_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('bar', ['height', 'window']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-system-bar',\n props: {\n height: {\n type: [Number, String],\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n lightsOut: Boolean,\n status: Boolean,\n window: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-system-bar--lights-out': this.lightsOut, 'v-system-bar--absolute': this.absolute, 'v-system-bar--fixed': !this.absolute && (this.app || this.fixed), 'v-system-bar--status': this.status, 'v-system-bar--window': this.window }, this.themeClasses);\n },\n computedHeight: function computedHeight() {\n if (this.height) return parseInt(this.height);\n return this.window ? 32 : 24;\n }\n },\n methods: {\n /**\n * Update the application layout\n *\n * @return {number}\n */\n updateApplication: function updateApplication() {\n return this.computedHeight;\n }\n },\n render: function render(h) {\n var data = {\n staticClass: 'v-system-bar',\n 'class': this.classes,\n style: {\n height: this.computedHeight + \"px\"\n }\n };\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VSystemBar/index.ts\":\n/*!********************************************!*\\\n !*** ./src/components/VSystemBar/index.ts ***!\n \\********************************************/\n/*! exports provided: VSystemBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VSystemBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VSystemBar */ \"./src/components/VSystemBar/VSystemBar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSystemBar\", function() { return _VSystemBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VSystemBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTab.js\":\n/*!**************************************!*\\\n !*** ./src/components/VTabs/VTab.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable.ts\");\n/* harmony import */ var _mixins_routable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/routable */ \"./src/mixins/routable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Mixins\n\n\n\n// Utilities\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-tab',\n mixins: [_mixins_routable__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n // Must be after routable\n // to overwrite activeClass\n Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])('tabGroup'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true\n }\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-tabs__item': true, 'v-tabs__item--disabled': this.disabled }, this.groupClasses);\n },\n value: function value() {\n var to = this.to || this.href || '';\n if (this.$router && this.to === Object(this.to)) {\n var resolve = this.$router.resolve(this.to, this.$route, this.append);\n to = resolve.href;\n }\n return to.replace('#', '');\n }\n },\n watch: {\n $route: 'onRouteChange'\n },\n mounted: function mounted() {\n this.onRouteChange();\n },\n methods: {\n click: function click(e) {\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href && this.href.indexOf('#') > -1) e.preventDefault();\n this.$emit('click', e);\n this.to || this.toggle();\n },\n onRouteChange: function onRouteChange() {\n var _this = this;\n if (!this.to || !this.$refs.link) return;\n var path = \"_vnode.data.class.\" + this.activeClass;\n this.$nextTick(function () {\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"getObjectValueByPath\"])(_this.$refs.link, path)) {\n _this.toggle();\n }\n });\n }\n },\n render: function render(h) {\n var link = this.generateRouteLink(this.classes);\n var data = link.data;\n // If disabled, use div as anchor tags do not support\n // being disabled\n var tag = this.disabled ? 'div' : link.tag;\n data.ref = 'link';\n return h('div', {\n staticClass: 'v-tabs__div'\n }, [h(tag, data, this.$slots.default)]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabItem.js\":\n/*!******************************************!*\\\n !*** ./src/components/VTabs/VTabItem.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n// Extensions\n\n// Mixins\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'v-tab-item',\n props: {\n id: String\n },\n render: function render(h) {\n var render = _VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.render.call(this, h);\n // For backwards compatibility with v1.2\n /* istanbul ignore next */\n if (this.id) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"deprecate\"])('id', 'value', this);\n render.data.domProps = render.data.domProps || {};\n render.data.domProps.id = this.id;\n }\n return render;\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabs.js\":\n/*!***************************************!*\\\n !*** ./src/components/VTabs/VTabs.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_tabs_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_tabs.styl */ \"./src/stylus/components/_tabs.styl\");\n/* harmony import */ var _stylus_components_tabs_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_tabs_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _mixins_tabs_computed__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mixins/tabs-computed */ \"./src/components/VTabs/mixins/tabs-computed.js\");\n/* harmony import */ var _mixins_tabs_generators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/tabs-generators */ \"./src/components/VTabs/mixins/tabs-generators.js\");\n/* harmony import */ var _mixins_tabs_props__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mixins/tabs-props */ \"./src/components/VTabs/mixins/tabs-props.js\");\n/* harmony import */ var _mixins_tabs_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mixins/tabs-touch */ \"./src/components/VTabs/mixins/tabs-touch.js\");\n/* harmony import */ var _mixins_tabs_watchers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mixins/tabs-watchers */ \"./src/components/VTabs/mixins/tabs-watchers.js\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _directives_resize__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../directives/resize */ \"./src/directives/resize.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_ThemeProvider__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/ThemeProvider */ \"./src/util/ThemeProvider.ts\");\n// Styles\n\n// Extensions\n\n// Component level mixins\n\n\n\n\n\n// Mixins\n\n\n\n// Directives\n\n\n\n// Utils\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].extend({\n name: 'v-tabs',\n directives: {\n Resize: _directives_resize__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n },\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _mixins_tabs_computed__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_tabs_props__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_tabs_generators__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_tabs_touch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_tabs_watchers__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_9__[\"default\"]],\n provide: function provide() {\n return {\n tabGroup: this,\n tabProxy: this.tabProxy,\n registerItems: this.registerItems,\n unregisterItems: this.unregisterItems\n };\n },\n data: function data() {\n return {\n bar: [],\n content: [],\n isOverflowing: false,\n nextIconVisible: false,\n prevIconVisible: false,\n resizeTimeout: null,\n scrollOffset: 0,\n sliderWidth: null,\n sliderLeft: null,\n startX: 0,\n tabItems: null,\n transitionTime: 300,\n widths: {\n bar: 0,\n container: 0,\n wrapper: 0\n }\n };\n },\n watch: {\n items: 'onResize',\n tabs: 'onResize'\n },\n mounted: function mounted() {\n this.init();\n },\n methods: {\n checkIcons: function checkIcons() {\n this.prevIconVisible = this.checkPrevIcon();\n this.nextIconVisible = this.checkNextIcon();\n },\n checkPrevIcon: function checkPrevIcon() {\n return this.scrollOffset > 0;\n },\n checkNextIcon: function checkNextIcon() {\n // Check one scroll ahead to know the width of right-most item\n return this.widths.container > this.scrollOffset + this.widths.wrapper;\n },\n callSlider: function callSlider() {\n var _this = this;\n if (this.hideSlider || !this.activeTab) return false;\n // Give screen time to paint\n var activeTab = this.activeTab;\n this.$nextTick(function () {\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) return;\n _this.sliderWidth = activeTab.$el.scrollWidth;\n _this.sliderLeft = activeTab.$el.offsetLeft;\n });\n },\n // Do not process\n // until DOM is\n // painted\n init: function init() {\n /* istanbul ignore next */\n if (this.$listeners['input']) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_12__[\"deprecate\"])('@input', '@change', this);\n }\n },\n /**\n * When v-navigation-drawer changes the\n * width of the container, call resize\n * after the transition is complete\n */\n onResize: function onResize() {\n if (this._isDestroyed) return;\n this.setWidths();\n var delay = this.isBooted ? this.transitionTime : 0;\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(this.updateTabsView, delay);\n },\n overflowCheck: function overflowCheck(e, fn) {\n this.isOverflowing && fn(e);\n },\n scrollTo: function scrollTo(direction) {\n this.scrollOffset = this.newOffset(direction);\n },\n setOverflow: function setOverflow() {\n this.isOverflowing = this.widths.bar < this.widths.container;\n },\n setWidths: function setWidths() {\n var bar = this.$refs.bar ? this.$refs.bar.clientWidth : 0;\n var container = this.$refs.container ? this.$refs.container.clientWidth : 0;\n var wrapper = this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0;\n this.widths = { bar: bar, container: container, wrapper: wrapper };\n this.setOverflow();\n },\n parseNodes: function parseNodes() {\n var item = [];\n var items = [];\n var slider = [];\n var tab = [];\n var length = (this.$slots.default || []).length;\n for (var i = 0; i < length; i++) {\n var vnode = this.$slots.default[i];\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider':\n slider.push(vnode);\n break;\n case 'v-tabs-items':\n items.push(vnode);\n break;\n case 'v-tab-item':\n item.push(vnode);\n break;\n // case 'v-tab' - intentionally omitted\n default:\n tab.push(vnode);\n }\n } else {\n tab.push(vnode);\n }\n }\n return { tab: tab, slider: slider, items: items, item: item };\n },\n registerItems: function registerItems(fn) {\n this.tabItems = fn;\n fn(this.internalValue);\n },\n unregisterItems: function unregisterItems() {\n this.tabItems = null;\n },\n updateTabsView: function updateTabsView() {\n this.callSlider();\n this.scrollIntoView();\n this.checkIcons();\n },\n scrollIntoView: function scrollIntoView() {\n /* istanbul ignore next */\n if (!this.activeTab) return;\n if (!this.isOverflowing) return this.scrollOffset = 0;\n var totalWidth = this.widths.wrapper + this.scrollOffset;\n var _a = this.activeTab.$el,\n clientWidth = _a.clientWidth,\n offsetLeft = _a.offsetLeft;\n var itemOffset = clientWidth + offsetLeft;\n var additionalOffset = clientWidth * 0.3;\n if (this.activeTab === this.items[this.items.length - 1]) {\n additionalOffset = 0; // don't add an offset if selecting the last tab\n }\n /* istanbul ignore else */\n if (offsetLeft < this.scrollOffset) {\n this.scrollOffset = Math.max(offsetLeft - additionalOffset, 0);\n } else if (totalWidth < itemOffset) {\n this.scrollOffset -= totalWidth - itemOffset - additionalOffset;\n }\n },\n tabProxy: function tabProxy(val) {\n this.internalValue = val;\n }\n },\n render: function render(h) {\n var _a = this.parseNodes(),\n tab = _a.tab,\n slider = _a.slider,\n items = _a.items,\n item = _a.item;\n return h('div', {\n staticClass: 'v-tabs',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize\n }]\n }, [this.genBar([this.hideSlider ? null : this.genSlider(slider), tab]), h(_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n props: { dark: this.theme.isDark, light: !this.theme.isDark }\n }, [this.genItems(items, item)])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabsItems.js\":\n/*!********************************************!*\\\n !*** ./src/components/VTabs/VTabsItems.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VWindow/VWindow */ \"./src/components/VWindow/VWindow.ts\");\n// Extensions\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'v-tabs-items',\n inject: {\n registerItems: {\n default: null\n },\n tabProxy: {\n default: null\n },\n unregisterItems: {\n default: null\n }\n },\n props: {\n cycle: Boolean\n },\n watch: {\n internalValue: function internalValue(val) {\n /* istanbul ignore else */\n if (this.tabProxy) this.tabProxy(val);\n }\n },\n created: function created() {\n this.registerItems && this.registerItems(this.changeModel);\n },\n beforeDestroy: function beforeDestroy() {\n this.unregisterItems && this.unregisterItems();\n },\n methods: {\n changeModel: function changeModel(val) {\n this.internalValue = val;\n },\n // For backwards compatability with v1.2\n getValue: function getValue(item, i) {\n /* istanbul ignore if */\n if (item.id) return item.id;\n return _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.getValue.call(this, item, i);\n },\n next: function next() {\n if (!this.cycle && this.internalIndex === this.items.length - 1) {\n return;\n }\n _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.next.call(this);\n },\n prev: function prev() {\n if (!this.cycle && this.internalIndex === 0) {\n return;\n }\n _VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.prev.call(this);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/VTabsSlider.js\":\n/*!*********************************************!*\\\n !*** ./src/components/VTabs/VTabsSlider.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-tabs-slider',\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n render: function render(h) {\n return h('div', this.setBackgroundColor(this.color || 'accent', {\n staticClass: 'v-tabs__slider'\n }));\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/index.js\":\n/*!***************************************!*\\\n !*** ./src/components/VTabs/index.js ***!\n \\***************************************/\n/*! exports provided: VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTabs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTabs */ \"./src/components/VTabs/VTabs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabs\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTab__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTab */ \"./src/components/VTabs/VTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTab\", function() { return _VTab__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VTabsItems__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTabsItems */ \"./src/components/VTabs/VTabsItems.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsItems\", function() { return _VTabsItems__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _VTabItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VTabItem */ \"./src/components/VTabs/VTabItem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabItem\", function() { return _VTabItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VTabsSlider */ \"./src/components/VTabs/VTabsSlider.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsSlider\", function() { return _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VTabs: _VTabs__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VTab: _VTab__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VTabsItems: _VTabsItems__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n VTabItem: _VTabItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VTabsSlider: _VTabsSlider__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/mixins/tabs-computed.js\":\n/*!******************************************************!*\\\n !*** ./src/components/VTabs/mixins/tabs-computed.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Tabs computed\n *\n * @mixin\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n computed: {\n activeTab: function activeTab() {\n if (!this.selectedItems.length) return undefined;\n return this.selectedItems[0];\n },\n containerStyles: function containerStyles() {\n return this.height ? {\n height: parseInt(this.height, 10) + \"px\"\n } : null;\n },\n hasArrows: function hasArrows() {\n return (this.showArrows || !this.isMobile) && this.isOverflowing;\n },\n isMobile: function isMobile() {\n return this.$vuetify.breakpoint.width < this.mobileBreakPoint;\n },\n sliderStyles: function sliderStyles() {\n return {\n left: this.sliderLeft + \"px\",\n transition: this.sliderLeft != null ? null : 'none',\n width: this.sliderWidth + \"px\"\n };\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/mixins/tabs-generators.js\":\n/*!********************************************************!*\\\n !*** ./src/components/VTabs/mixins/tabs-generators.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTabsItems__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VTabsItems */ \"./src/components/VTabs/VTabsItems.js\");\n/* harmony import */ var _VTabsSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VTabsSlider */ \"./src/components/VTabs/VTabsSlider.js\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../VIcon */ \"./src/components/VIcon/index.ts\");\n\n\n\n/**\n * Tabs generators\n *\n * @mixin\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n genBar: function genBar(items) {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs__bar',\n 'class': this.themeClasses,\n ref: 'bar'\n }), [this.genTransition('prev'), this.genWrapper(this.genContainer(items)), this.genTransition('next')]);\n },\n genContainer: function genContainer(items) {\n return this.$createElement('div', {\n staticClass: 'v-tabs__container',\n class: {\n 'v-tabs__container--align-with-title': this.alignWithTitle,\n 'v-tabs__container--centered': this.centered,\n 'v-tabs__container--fixed-tabs': this.fixedTabs,\n 'v-tabs__container--grow': this.grow,\n 'v-tabs__container--icons-and-text': this.iconsAndText,\n 'v-tabs__container--overflow': this.isOverflowing,\n 'v-tabs__container--right': this.right\n },\n style: this.containerStyles,\n ref: 'container'\n }, items);\n },\n genIcon: function genIcon(direction) {\n var _this = this;\n if (!this.hasArrows || !this[direction + \"IconVisible\"]) return null;\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n staticClass: \"v-tabs__icon v-tabs__icon--\" + direction,\n props: {\n disabled: !this[direction + \"IconVisible\"]\n },\n on: {\n click: function click() {\n return _this.scrollTo(direction);\n }\n }\n }, this[direction + \"Icon\"]);\n },\n genItems: function genItems(items, item) {\n if (items.length > 0) return items;\n if (!item.length) return null;\n return this.$createElement(_VTabsItems__WEBPACK_IMPORTED_MODULE_0__[\"default\"], item);\n },\n genTransition: function genTransition(direction) {\n return this.$createElement('transition', {\n props: { name: 'fade-transition' }\n }, [this.genIcon(direction)]);\n },\n genWrapper: function genWrapper(items) {\n var _this = this;\n return this.$createElement('div', {\n staticClass: 'v-tabs__wrapper',\n class: {\n 'v-tabs__wrapper--show-arrows': this.hasArrows\n },\n ref: 'wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: function start(e) {\n return _this.overflowCheck(e, _this.onTouchStart);\n },\n move: function move(e) {\n return _this.overflowCheck(e, _this.onTouchMove);\n },\n end: function end(e) {\n return _this.overflowCheck(e, _this.onTouchEnd);\n }\n }\n }]\n }, [items]);\n },\n genSlider: function genSlider(items) {\n if (!items.length) {\n items = [this.$createElement(_VTabsSlider__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: { color: this.sliderColor }\n })];\n }\n return this.$createElement('div', {\n staticClass: 'v-tabs__slider-wrapper',\n style: this.sliderStyles\n }, items);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/mixins/tabs-props.js\":\n/*!***************************************************!*\\\n !*** ./src/components/VTabs/mixins/tabs-props.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Tabs props\n *\n * @mixin\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n activeClass: {\n type: String,\n default: 'v-tabs__item--active'\n },\n alignWithTitle: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mandatory: {\n type: Boolean,\n default: true\n },\n mobileBreakPoint: {\n type: [Number, String],\n default: 1264,\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n right: Boolean,\n showArrows: Boolean,\n sliderColor: {\n type: String,\n default: 'accent'\n },\n value: [Number, String]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/mixins/tabs-touch.js\":\n/*!***************************************************!*\\\n !*** ./src/components/VTabs/mixins/tabs-touch.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Tabs touch\n *\n * @mixin\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n newOffset: function newOffset(direction) {\n var clientWidth = this.$refs.wrapper.clientWidth;\n if (direction === 'prev') {\n return Math.max(this.scrollOffset - clientWidth, 0);\n } else {\n return Math.min(this.scrollOffset + clientWidth, this.$refs.container.clientWidth - clientWidth);\n }\n },\n onTouchStart: function onTouchStart(e) {\n this.startX = this.scrollOffset + e.touchstartX;\n this.$refs.container.style.transition = 'none';\n this.$refs.container.style.willChange = 'transform';\n },\n onTouchMove: function onTouchMove(e) {\n this.scrollOffset = this.startX - e.touchmoveX;\n },\n onTouchEnd: function onTouchEnd() {\n var container = this.$refs.container;\n var wrapper = this.$refs.wrapper;\n var maxScrollOffset = container.clientWidth - wrapper.clientWidth;\n container.style.transition = null;\n container.style.willChange = null;\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0;\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset;\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTabs/mixins/tabs-watchers.js\":\n/*!******************************************************!*\\\n !*** ./src/components/VTabs/mixins/tabs-watchers.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Tabs watchers\n *\n * @mixin\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n watch: {\n activeTab: function activeTab(val, oldVal) {\n this.setOverflow();\n if (!val) return;\n this.tabItems && this.tabItems(this.getValue(val, this.items.indexOf(val)));\n // Do nothing for first tab\n // is handled from isBooted\n // watcher\n if (oldVal == null) return;\n this.updateTabsView();\n },\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n fixedTabs: 'callSlider',\n hasArrows: function hasArrows(val) {\n if (!val) this.scrollOffset = 0;\n },\n /* @deprecate */\n internalValue: function internalValue(val) {\n /* istanbul ignore else */\n if (!this.$listeners['input']) return;\n this.$emit('input', val);\n },\n lazyValue: 'updateTabs',\n right: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n scrollOffset: function scrollOffset(val) {\n this.$refs.container.style.transform = \"translateX(\" + -val + \"px)\";\n if (this.hasArrows) {\n this.prevIconVisible = this.checkPrevIcon();\n this.nextIconVisible = this.checkNextIcon();\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTextField/VTextField.js\":\n/*!*************************************************!*\\\n !*** ./src/components/VTextField/VTextField.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_text-fields.styl */ \"./src/stylus/components/_text-fields.styl\");\n/* harmony import */ var _stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_text_fields_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VCounter */ \"./src/components/VCounter/index.ts\");\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony import */ var _mixins_maskable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/maskable */ \"./src/mixins/maskable.js\");\n/* harmony import */ var _mixins_loadable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/loadable */ \"./src/mixins/loadable.ts\");\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../directives/ripple */ \"./src/directives/ripple.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Extensions\n\n// Components\n\n\n// Mixins\n\n\n// Directives\n\n// Utilities\n\n\nvar dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extend({\n name: 'v-text-field',\n directives: { Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_6__[\"default\"] },\n mixins: [_mixins_maskable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_loadable__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n inheritAttrs: false,\n props: {\n appendOuterIcon: String,\n /** @deprecated */\n appendOuterIconCb: Function,\n autofocus: Boolean,\n box: Boolean,\n browserAutocomplete: String,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$vuetify.icons.clear'\n },\n clearIconCb: Function,\n color: {\n type: String,\n default: 'primary'\n },\n counter: [Boolean, Number, String],\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outline: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n /** @deprecated */\n prependInnerIconCb: Function,\n reverse: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text'\n }\n },\n data: function data() {\n return {\n badInput: false,\n initialValue: null,\n internalChange: false,\n isClearing: false\n };\n },\n computed: {\n classes: function classes() {\n return {\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--box': this.box,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outline': this.hasOutline,\n 'v-text-field--placeholder': this.placeholder\n };\n },\n counterValue: function counterValue() {\n return (this.internalValue || '').toString().length;\n },\n directivesInput: function directivesInput() {\n return [];\n },\n // TODO: Deprecate\n hasOutline: function hasOutline() {\n return this.outline || this.textarea;\n },\n internalValue: {\n get: function get() {\n return this.lazyValue;\n },\n set: function set(val) {\n if (this.mask && val !== this.lazyValue) {\n this.lazyValue = this.unmaskText(this.maskText(this.unmaskText(val)));\n this.setSelectionRange();\n } else {\n this.lazyValue = val;\n this.$emit('input', this.lazyValue);\n }\n }\n },\n isDirty: function isDirty() {\n return this.lazyValue != null && this.lazyValue.toString().length > 0 || this.badInput;\n },\n isEnclosed: function isEnclosed() {\n return this.box || this.isSolo || this.hasOutline || this.fullWidth;\n },\n isLabelActive: function isLabelActive() {\n return this.isDirty || dirtyTypes.includes(this.type);\n },\n isSingle: function isSingle() {\n return this.isSolo || this.singleLine;\n },\n isSolo: function isSolo() {\n return this.solo || this.soloInverted;\n },\n labelPosition: function labelPosition() {\n var offset = this.prefix && !this.labelValue ? this.prefixWidth : 0;\n return !this.$vuetify.rtl !== !this.reverse ? {\n left: 'auto',\n right: offset\n } : {\n left: offset,\n right: 'auto'\n };\n },\n showLabel: function showLabel() {\n return this.hasLabel && (!this.isSingle || !this.isLabelActive && !this.placeholder && !this.prefixLabel);\n },\n labelValue: function labelValue() {\n return !this.isSingle && Boolean(this.isFocused || this.isLabelActive || this.placeholder || this.prefixLabel);\n },\n prefixWidth: function prefixWidth() {\n if (!this.prefix && !this.$refs.prefix) return;\n return this.$refs.prefix.offsetWidth;\n },\n prefixLabel: function prefixLabel() {\n return this.prefix && !this.value;\n }\n },\n watch: {\n isFocused: function isFocused(val) {\n // Sets validationState from validatable\n this.hasColor = val;\n if (val) {\n this.initialValue = this.lazyValue;\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue);\n }\n },\n value: function value(val) {\n var _this = this;\n if (this.mask && !this.internalChange) {\n var masked_1 = this.maskText(this.unmaskText(val));\n this.lazyValue = this.unmaskText(masked_1);\n // Emit when the externally set value was modified internally\n String(val) !== this.lazyValue && this.$nextTick(function () {\n _this.$refs.input.value = masked_1;\n _this.$emit('input', _this.lazyValue);\n });\n } else this.lazyValue = val;\n }\n },\n mounted: function mounted() {\n this.autofocus && this.onFocus();\n },\n methods: {\n /** @public */\n focus: function focus() {\n this.onFocus();\n },\n /** @public */\n blur: function blur(e) {\n var _this = this;\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(function () {\n _this.$refs.input && _this.$refs.input.blur();\n });\n this.onBlur(e);\n },\n clearableCallback: function clearableCallback() {\n var _this = this;\n this.internalValue = null;\n this.$nextTick(function () {\n return _this.$refs.input.focus();\n });\n },\n genAppendSlot: function genAppendSlot() {\n var slot = [];\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer']);\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'));\n }\n return this.genSlot('append', 'outer', slot);\n },\n genPrependInnerSlot: function genPrependInnerSlot() {\n var slot = [];\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner']);\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'));\n }\n return this.genSlot('prepend', 'inner', slot);\n },\n genIconSlot: function genIconSlot() {\n var slot = [];\n if (this.$slots['append']) {\n slot.push(this.$slots['append']);\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'));\n }\n return this.genSlot('append', 'inner', slot);\n },\n genInputSlot: function genInputSlot() {\n var input = _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInputSlot.call(this);\n var prepend = this.genPrependInnerSlot();\n prepend && input.children.unshift(prepend);\n return input;\n },\n genClearIcon: function genClearIcon() {\n if (!this.clearable) return null;\n var icon = !this.isDirty ? false : 'clear';\n if (this.clearIconCb) Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"deprecate\"])(':clear-icon-cb', '@click:clear', this);\n return this.genSlot('append', 'inner', [this.genIcon(icon, !this.$listeners['click:clear'] && this.clearIconCb || this.clearableCallback, false)]);\n },\n genCounter: function genCounter() {\n if (this.counter === false || this.counter == null) return null;\n var max = this.counter === true ? this.$attrs.maxlength : this.counter;\n return this.$createElement(_VCounter__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n props: {\n dark: this.dark,\n light: this.light,\n max: max,\n value: this.counterValue\n }\n });\n },\n genDefaultSlot: function genDefaultSlot() {\n return [this.genTextFieldSlot(), this.genClearIcon(), this.genIconSlot(), this.genProgress()];\n },\n genLabel: function genLabel() {\n if (!this.showLabel) return null;\n var data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.disabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue\n }\n };\n if (this.$attrs.id) data.props.for = this.$attrs.id;\n return this.$createElement(_VLabel__WEBPACK_IMPORTED_MODULE_3__[\"default\"], data, this.$slots.label || this.label);\n },\n genInput: function genInput() {\n var listeners = Object.assign({}, this.$listeners);\n delete listeners['change']; // Change should not be bound externally\n var data = {\n style: {},\n domProps: {\n value: this.maskText(this.lazyValue)\n },\n attrs: __assign({ 'aria-label': (!this.$attrs || !this.$attrs.id) && this.label }, this.$attrs, { autofocus: this.autofocus, disabled: this.disabled, readonly: this.readonly, type: this.type }),\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown\n }),\n ref: 'input'\n };\n if (this.placeholder) data.attrs.placeholder = this.placeholder;\n if (this.mask) data.attrs.maxlength = this.masked.length;\n if (this.browserAutocomplete) data.attrs.autocomplete = this.browserAutocomplete;\n return this.$createElement('input', data);\n },\n genMessages: function genMessages() {\n if (this.hideDetails) return null;\n return this.$createElement('div', {\n staticClass: 'v-text-field__details'\n }, [_VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genMessages.call(this), this.genCounter()]);\n },\n genTextFieldSlot: function genTextFieldSlot() {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot'\n }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, this.genInput(), this.suffix ? this.genAffix('suffix') : null]);\n },\n genAffix: function genAffix(type) {\n return this.$createElement('div', {\n 'class': \"v-text-field__\" + type,\n ref: type\n }, this[type]);\n },\n onBlur: function onBlur(e) {\n this.isFocused = false;\n // Reset internalChange state\n // to allow external change\n // to persist\n this.internalChange = false;\n e && this.$emit('blur', e);\n },\n onClick: function onClick() {\n if (this.isFocused || this.disabled) return;\n this.$refs.input.focus();\n },\n onFocus: function onFocus(e) {\n if (!this.$refs.input) return;\n if (document.activeElement !== this.$refs.input) {\n return this.$refs.input.focus();\n }\n if (!this.isFocused) {\n this.isFocused = true;\n this.$emit('focus', e);\n }\n },\n onInput: function onInput(e) {\n this.internalChange = true;\n this.mask && this.resetSelections(e.target);\n this.internalValue = e.target.value;\n this.badInput = e.target.validity && e.target.validity.badInput;\n },\n onKeyDown: function onKeyDown(e) {\n this.internalChange = true;\n if (e.keyCode === _util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"keyCodes\"].enter) this.$emit('change', this.internalValue);\n this.$emit('keydown', e);\n },\n onMouseDown: function onMouseDown(e) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault();\n e.stopPropagation();\n }\n _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onMouseDown.call(this, e);\n },\n onMouseUp: function onMouseUp(e) {\n if (this.hasMouseDown) this.focus();\n _VInput__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onMouseUp.call(this, e);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTextField/index.js\":\n/*!********************************************!*\\\n !*** ./src/components/VTextField/index.js ***!\n \\********************************************/\n/*! exports provided: VTextField, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTextField\", function() { return wrapper; });\n/* harmony import */ var _VTextField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextField */ \"./src/components/VTextField/VTextField.js\");\n/* harmony import */ var _VTextarea_VTextarea__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VTextarea/VTextarea */ \"./src/components/VTextarea/VTextarea.js\");\n/* harmony import */ var _util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/rebuildFunctionalSlots */ \"./src/util/rebuildFunctionalSlots.ts\");\n/* harmony import */ var _util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/dedupeModelListeners */ \"./src/util/dedupeModelListeners.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n\n\n\n\n// TODO: remove this in v2.0\n/* @vue/component */\nvar wrapper = {\n functional: true,\n $_wrapperFor: _VTextField__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n props: {\n textarea: Boolean,\n multiLine: Boolean\n },\n render: function render(h, _a) {\n var props = _a.props,\n data = _a.data,\n slots = _a.slots,\n parent = _a.parent;\n Object(_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(data);\n var children = Object(_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(slots(), h);\n if (props.textarea) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"deprecate\"])('<v-text-field textarea>', '<v-textarea outline>', wrapper, parent);\n }\n if (props.multiLine) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_4__[\"deprecate\"])('<v-text-field multi-line>', '<v-textarea>', wrapper, parent);\n }\n if (props.textarea || props.multiLine) {\n data.attrs.outline = props.textarea;\n return h(_VTextarea_VTextarea__WEBPACK_IMPORTED_MODULE_1__[\"default\"], data, children);\n } else {\n return h(_VTextField__WEBPACK_IMPORTED_MODULE_0__[\"default\"], data, children);\n }\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (wrapper);\n\n/***/ }),\n\n/***/ \"./src/components/VTextarea/VTextarea.js\":\n/*!***********************************************!*\\\n !*** ./src/components/VTextarea/VTextarea.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_textarea_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_textarea.styl */ \"./src/stylus/components/_textarea.styl\");\n/* harmony import */ var _stylus_components_textarea_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_textarea_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VTextField/VTextField */ \"./src/components/VTextField/VTextField.js\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Extensions\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-textarea',\n extends: _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n outline: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: function validator(v) {\n return !isNaN(parseFloat(v));\n }\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: function validator(v) {\n return !isNaN(parseInt(v, 10));\n }\n }\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-textarea': true, 'v-textarea--auto-grow': this.autoGrow, 'v-textarea--no-resize': this.noResizeHandle }, _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.classes.call(this, null));\n },\n dynamicHeight: function dynamicHeight() {\n return this.autoGrow ? this.inputHeight : 'auto';\n },\n isEnclosed: function isEnclosed() {\n return this.textarea || _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.computed.isEnclosed.call(this);\n },\n noResizeHandle: function noResizeHandle() {\n return this.noResize || this.autoGrow;\n }\n },\n watch: {\n lazyValue: function lazyValue() {\n !this.internalChange && this.autoGrow && this.$nextTick(this.calculateInputHeight);\n }\n },\n mounted: function mounted() {\n var _this = this;\n setTimeout(function () {\n _this.autoGrow && _this.calculateInputHeight();\n }, 0);\n // TODO: remove (2.0)\n if (this.autoGrow && this.noResize) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleInfo\"])('\"no-resize\" is now implied when using \"auto-grow\", and can be removed', this);\n }\n },\n methods: {\n calculateInputHeight: function calculateInputHeight() {\n var input = this.$refs.input;\n if (input) {\n input.style.height = 0;\n var height = input.scrollHeight;\n var minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight);\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px';\n }\n },\n genInput: function genInput() {\n var input = _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genInput.call(this);\n input.tag = 'textarea';\n delete input.data.attrs.type;\n input.data.attrs.rows = this.rows;\n return input;\n },\n onInput: function onInput(e) {\n _VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.onInput.call(this, e);\n this.autoGrow && this.calculateInputHeight();\n },\n onKeyDown: function onKeyDown(e) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation();\n }\n this.internalChange = true;\n this.$emit('keydown', e);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTextarea/index.js\":\n/*!*******************************************!*\\\n !*** ./src/components/VTextarea/index.js ***!\n \\*******************************************/\n/*! exports provided: VTextarea, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTextarea__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTextarea */ \"./src/components/VTextarea/VTextarea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextarea\", function() { return _VTextarea__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTextarea__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePicker.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VTimePicker/VTimePicker.ts ***!\n \\***************************************************/\n/*! exports provided: selectingTimes, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectingTimes\", function() { return selectingTimes; });\n/* harmony import */ var _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePickerTitle */ \"./src/components/VTimePicker/VTimePickerTitle.ts\");\n/* harmony import */ var _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimePickerClock */ \"./src/components/VTimePicker/VTimePickerClock.ts\");\n/* harmony import */ var _mixins_picker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/picker */ \"./src/mixins/picker.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../VDatePicker/util/pad */ \"./src/components/VDatePicker/util/pad.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n// Components\n\n\n// Mixins\n\n// Utils\n\n\n\nvar rangeHours24 = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"createRange\"])(24);\nvar rangeHours12am = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"createRange\"])(12);\nvar rangeHours12pm = rangeHours12am.map(function (v) {\n return v + 12;\n});\nvar range60 = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"createRange\"])(60);\nvar selectingTimes = { hour: 1, minute: 2, second: 3 };\nvar selectingNames = { 1: 'hour', 2: 'minute', 3: 'second' };\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_mixins_picker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-time-picker',\n props: {\n allowedHours: Function,\n allowedMinutes: Function,\n allowedSeconds: Function,\n disabled: Boolean,\n format: {\n type: String,\n default: 'ampm',\n validator: function validator(val) {\n return ['ampm', '24hr'].includes(val);\n }\n },\n min: String,\n max: String,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n value: null\n },\n data: function data() {\n return {\n inputHour: null,\n inputMinute: null,\n inputSecond: null,\n lazyInputHour: null,\n lazyInputMinute: null,\n lazyInputSecond: null,\n period: 'am',\n selecting: selectingTimes.hour\n };\n },\n computed: {\n selectingHour: {\n get: function get() {\n return this.selecting === selectingTimes.hour;\n },\n set: function set(v) {\n this.selecting = selectingTimes.hour;\n }\n },\n selectingMinute: {\n get: function get() {\n return this.selecting === selectingTimes.minute;\n },\n set: function set(v) {\n this.selecting = selectingTimes.minute;\n }\n },\n selectingSecond: {\n get: function get() {\n return this.selecting === selectingTimes.second;\n },\n set: function set(v) {\n this.selecting = selectingTimes.second;\n }\n },\n isAllowedHourCb: function isAllowedHourCb() {\n var _this = this;\n if (!this.min && !this.max) return this.allowedHours;\n var minHour = this.min ? Number(this.min.split(':')[0]) : 0;\n var maxHour = this.max ? Number(this.max.split(':')[0]) : 23;\n return function (val) {\n return val >= minHour * 1 && val <= maxHour * 1 && (!_this.allowedHours || _this.allowedHours(val));\n };\n },\n isAllowedMinuteCb: function isAllowedMinuteCb() {\n var _this = this;\n var isHourAllowed = !this.allowedHours || this.allowedHours(this.inputHour);\n if (!this.min && !this.max) {\n return isHourAllowed ? this.allowedMinutes : function () {\n return false;\n };\n }\n var _a = __read(this.min ? this.min.split(':').map(Number) : [0, 0], 2),\n minHour = _a[0],\n minMinute = _a[1];\n var _b = __read(this.max ? this.max.split(':').map(Number) : [23, 59], 2),\n maxHour = _b[0],\n maxMinute = _b[1];\n var minTime = minHour * 60 + minMinute * 1;\n var maxTime = maxHour * 60 + maxMinute * 1;\n return function (val) {\n var time = 60 * _this.inputHour + val;\n return time >= minTime && time <= maxTime && isHourAllowed && (!_this.allowedMinutes || _this.allowedMinutes(val));\n };\n },\n isAllowedSecondCb: function isAllowedSecondCb() {\n var _this = this;\n var isHourAllowed = !this.allowedHours || this.allowedHours(this.inputHour);\n var isMinuteAllowed = !this.allowedMinutes || this.allowedMinutes(this.inputMinute);\n if (!this.min && !this.max) {\n return isHourAllowed && isMinuteAllowed ? this.allowedSeconds : function () {\n return false;\n };\n }\n var _a = __read(this.min ? this.min.split(':').map(Number) : [0, 0, 0], 3),\n minHour = _a[0],\n minMinute = _a[1],\n minSecond = _a[2];\n var _b = __read(this.max ? this.max.split(':').map(Number) : [23, 59, 59], 3),\n maxHour = _b[0],\n maxMinute = _b[1],\n maxSecond = _b[2];\n var minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1;\n var maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1;\n return function (val) {\n var time = 3600 * _this.inputHour + 60 * _this.inputMinute + val;\n return time >= minTime && time <= maxTime && isHourAllowed && isMinuteAllowed && (!_this.allowedSeconds || _this.allowedSeconds(val));\n };\n },\n isAmPm: function isAmPm() {\n return this.format === 'ampm';\n }\n },\n watch: {\n value: 'setInputData'\n },\n mounted: function mounted() {\n this.setInputData(this.value);\n },\n methods: {\n genValue: function genValue() {\n if (this.inputHour != null && this.inputMinute != null && (!this.useSeconds || this.inputSecond != null)) {\n return Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this.inputHour) + \":\" + Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this.inputMinute) + (this.useSeconds ? \":\" + Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this.inputSecond) : '');\n }\n return null;\n },\n emitValue: function emitValue() {\n var value = this.genValue();\n if (value !== null) this.$emit('input', value);\n },\n setPeriod: function setPeriod(period) {\n this.period = period;\n if (this.inputHour != null) {\n var newHour = this.inputHour + (period === 'am' ? -12 : 12);\n this.inputHour = this.firstAllowed('hour', newHour);\n this.emitValue();\n }\n },\n setInputData: function setInputData(value) {\n if (value == null || value === '') {\n this.inputHour = null;\n this.inputMinute = null;\n this.inputSecond = null;\n } else if (value instanceof Date) {\n this.inputHour = value.getHours();\n this.inputMinute = value.getMinutes();\n this.inputSecond = value.getSeconds();\n } else {\n var _a = __read(value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6), 6),\n hour = _a[1],\n minute = _a[2],\n second = _a[4],\n period = _a[5];\n this.inputHour = period ? this.convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n this.inputMinute = parseInt(minute, 10);\n this.inputSecond = parseInt(second || 0, 10);\n }\n this.period = this.inputHour == null || this.inputHour < 12 ? 'am' : 'pm';\n },\n convert24to12: function convert24to12(hour) {\n return hour ? (hour - 1) % 12 + 1 : 12;\n },\n convert12to24: function convert12to24(hour, period) {\n return hour % 12 + (period === 'pm' ? 12 : 0);\n },\n onInput: function onInput(value) {\n if (this.selecting === selectingTimes.hour) {\n this.inputHour = this.isAmPm ? this.convert12to24(value, this.period) : value;\n } else if (this.selecting === selectingTimes.minute) {\n this.inputMinute = value;\n } else {\n this.inputSecond = value;\n }\n this.emitValue();\n },\n onChange: function onChange(value) {\n this.$emit(\"click:\" + selectingNames[this.selecting], value);\n var emitChange = this.selecting === (this.useSeconds ? selectingTimes.second : selectingTimes.minute);\n if (this.selecting === selectingTimes.hour) {\n this.selecting = selectingTimes.minute;\n } else if (this.useSeconds && this.selecting === selectingTimes.minute) {\n this.selecting = selectingTimes.second;\n }\n if (this.inputHour === this.lazyInputHour && this.inputMinute === this.lazyInputMinute && (!this.useSeconds || this.inputSecond === this.lazyInputSecond)) return;\n var time = this.genValue();\n if (time === null) return;\n this.lazyInputHour = this.inputHour;\n this.lazyInputMinute = this.inputMinute;\n this.useSeconds && (this.lazyInputSecond = this.inputSecond);\n emitChange && this.$emit('change', time);\n },\n firstAllowed: function firstAllowed(type, value) {\n var allowedFn = type === 'hour' ? this.isAllowedHourCb : type === 'minute' ? this.isAllowedMinuteCb : this.isAllowedSecondCb;\n if (!allowedFn) return value;\n // TODO: clean up\n var range = type === 'minute' ? range60 : type === 'second' ? range60 : this.isAmPm ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n var first = range.find(function (v) {\n return allowedFn((v + value) % range.length + range[0]);\n });\n return ((first || 0) + value) % range.length + range[0];\n },\n genClock: function genClock() {\n return this.$createElement(_VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n allowedValues: this.selecting === selectingTimes.hour ? this.isAllowedHourCb : this.selecting === selectingTimes.minute ? this.isAllowedMinuteCb : this.isAllowedSecondCb,\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n double: this.selecting === selectingTimes.hour && !this.isAmPm,\n format: this.selecting === selectingTimes.hour ? this.isAmPm ? this.convert24to12 : function (val) {\n return val;\n } : function (val) {\n return Object(_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(val, 2);\n },\n light: this.light,\n max: this.selecting === selectingTimes.hour ? this.isAmPm && this.period === 'am' ? 11 : 23 : 59,\n min: this.selecting === selectingTimes.hour && this.isAmPm && this.period === 'pm' ? 12 : 0,\n readonly: this.readonly,\n scrollable: this.scrollable,\n size: Number(this.width) - (!this.fullWidth && this.landscape ? 80 : 20),\n step: this.selecting === selectingTimes.hour ? 1 : 5,\n value: this.selecting === selectingTimes.hour ? this.inputHour : this.selecting === selectingTimes.minute ? this.inputMinute : this.inputSecond\n },\n on: {\n input: this.onInput,\n change: this.onChange\n },\n ref: 'clock'\n });\n },\n genPickerBody: function genPickerBody() {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-clock__container',\n key: this.selecting\n }, [this.genClock()]);\n },\n genPickerTitle: function genPickerTitle() {\n var _this = this;\n return this.$createElement(_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n props: {\n ampm: this.isAmPm,\n disabled: this.disabled,\n hour: this.inputHour,\n minute: this.inputMinute,\n second: this.inputSecond,\n period: this.period,\n readonly: this.readonly,\n useSeconds: this.useSeconds,\n selecting: this.selecting\n },\n on: {\n 'update:selecting': function updateSelecting(value) {\n return _this.selecting = value;\n },\n 'update:period': this.setPeriod\n },\n ref: 'title',\n slot: 'title'\n });\n }\n },\n render: function render() {\n return this.genPicker('v-picker--time');\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerClock.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/VTimePicker/VTimePickerClock.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_time_picker_clock_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_time-picker-clock.styl */ \"./src/stylus/components/_time-picker-clock.styl\");\n/* harmony import */ var _stylus_components_time_picker_clock_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_time_picker_clock_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// Mixins\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-time-picker-clock',\n props: {\n allowedValues: Function,\n disabled: Boolean,\n double: Boolean,\n format: {\n type: Function,\n default: function _default(val) {\n return val;\n }\n },\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0\n },\n step: {\n type: Number,\n default: 1\n },\n value: Number\n },\n data: function data() {\n return {\n inputValue: this.value,\n isDragging: false,\n valueOnMouseDown: null,\n valueOnMouseUp: null\n };\n },\n computed: {\n count: function count() {\n return this.max - this.min + 1;\n },\n degreesPerUnit: function degreesPerUnit() {\n return 360 / this.roundCount;\n },\n degrees: function degrees() {\n return this.degreesPerUnit * Math.PI / 180;\n },\n displayedValue: function displayedValue() {\n return this.value == null ? this.min : this.value;\n },\n innerRadiusScale: function innerRadiusScale() {\n return 0.62;\n },\n roundCount: function roundCount() {\n return this.double ? this.count / 2 : this.count;\n }\n },\n watch: {\n value: function value(_value) {\n this.inputValue = _value;\n }\n },\n methods: {\n wheel: function wheel(e) {\n e.preventDefault();\n var delta = Math.sign(-e.deltaY || 1);\n var value = this.displayedValue;\n do {\n value = value + delta;\n value = (value - this.min + this.count) % this.count + this.min;\n } while (!this.isAllowed(value) && value !== this.displayedValue);\n if (value !== this.displayedValue) {\n this.update(value);\n }\n },\n isInner: function isInner(value) {\n return this.double && value - this.min >= this.roundCount;\n },\n handScale: function handScale(value) {\n return this.isInner(value) ? this.innerRadiusScale : 1;\n },\n isAllowed: function isAllowed(value) {\n return !this.allowedValues || this.allowedValues(value);\n },\n genValues: function genValues() {\n var children = [];\n for (var value = this.min; value <= this.max; value = value + this.step) {\n var color = value === this.value && (this.color || 'accent');\n children.push(this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__item',\n 'class': {\n 'v-time-picker-clock__item--active': value === this.displayedValue,\n 'v-time-picker-clock__item--disabled': this.disabled || !this.isAllowed(value)\n },\n style: this.getTransform(value),\n domProps: { innerHTML: \"<span>\" + this.format(value) + \"</span>\" }\n })));\n }\n return children;\n },\n genHand: function genHand() {\n var scale = \"scaleY(\" + this.handScale(this.displayedValue) + \")\";\n var angle = this.rotate + this.degreesPerUnit * (this.displayedValue - this.min);\n var color = this.value != null && (this.color || 'accent');\n return this.$createElement('div', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__hand',\n 'class': {\n 'v-time-picker-clock__hand--inner': this.isInner(this.value)\n },\n style: {\n transform: \"rotate(\" + angle + \"deg) \" + scale\n }\n }));\n },\n getTransform: function getTransform(i) {\n var _a = this.getPosition(i),\n x = _a.x,\n y = _a.y;\n return {\n left: 50 + x * 50 + \"%\",\n top: 50 + y * 50 + \"%\"\n };\n },\n getPosition: function getPosition(value) {\n var rotateRadians = this.rotate * Math.PI / 180;\n return {\n x: Math.sin((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n y: -Math.cos((value - this.min) * this.degrees + rotateRadians) * this.handScale(value)\n };\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n this.valueOnMouseDown = null;\n this.valueOnMouseUp = null;\n this.isDragging = true;\n this.onDragMove(e);\n },\n onMouseUp: function onMouseUp() {\n this.isDragging = false;\n if (this.valueOnMouseUp !== null && this.isAllowed(this.valueOnMouseUp)) {\n this.$emit('change', this.valueOnMouseUp);\n }\n },\n onDragMove: function onDragMove(e) {\n e.preventDefault();\n if (!this.isDragging && e.type !== 'click') return;\n var _a = this.$refs.clock.getBoundingClientRect(),\n width = _a.width,\n top = _a.top,\n left = _a.left;\n var innerWidth = this.$refs.innerClock.getBoundingClientRect().width;\n var _b = 'touches' in e ? e.touches[0] : e,\n clientX = _b.clientX,\n clientY = _b.clientY;\n var center = { x: width / 2, y: -width / 2 };\n var coords = { x: clientX - left, y: top - clientY };\n var handAngle = Math.round(this.angle(center, coords) - this.rotate + 360) % 360;\n var insideClick = this.double && this.euclidean(center, coords) < (innerWidth + innerWidth * this.innerRadiusScale) / 4;\n var value = (Math.round(handAngle / this.degreesPerUnit) + (insideClick ? this.roundCount : 0)) % this.count + this.min;\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n var newValue;\n if (handAngle >= 360 - this.degreesPerUnit / 2) {\n newValue = insideClick ? this.max - this.roundCount + 1 : this.min;\n } else {\n newValue = value;\n }\n if (this.isAllowed(value)) {\n if (this.valueOnMouseDown === null) {\n this.valueOnMouseDown = newValue;\n }\n this.valueOnMouseUp = newValue;\n this.update(newValue);\n }\n },\n update: function update(value) {\n if (this.inputValue !== value) {\n this.inputValue = value;\n this.$emit('input', value);\n }\n },\n euclidean: function euclidean(p0, p1) {\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n angle: function angle(center, p1) {\n var value = 2 * Math.atan2(p1.y - center.y - this.euclidean(center, p1), p1.x - center.x);\n return Math.abs(value * 180 / Math.PI);\n }\n },\n render: function render(h) {\n var _this = this;\n var data = {\n staticClass: 'v-time-picker-clock',\n class: __assign({ 'v-time-picker-clock--indeterminate': this.value == null }, this.themeClasses),\n on: this.readonly || this.disabled ? undefined : Object.assign({\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n mouseleave: function mouseleave() {\n return _this.isDragging && _this.onMouseUp();\n },\n touchstart: this.onMouseDown,\n touchend: this.onMouseUp,\n mousemove: this.onDragMove,\n touchmove: this.onDragMove\n }, this.scrollable ? {\n wheel: this.wheel\n } : {}),\n ref: 'clock'\n };\n return h('div', data, [h('div', {\n staticClass: 'v-time-picker-clock__inner',\n ref: 'innerClock'\n }, [this.genHand(), this.genValues()])]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/VTimePickerTitle.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/VTimePicker/VTimePickerTitle.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_time_picker_title_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_time-picker-title.styl */ \"./src/stylus/components/_time-picker-title.styl\");\n/* harmony import */ var _stylus_components_time_picker_title_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_time_picker_title_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/picker-button */ \"./src/mixins/picker-button.ts\");\n/* harmony import */ var _VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../VDatePicker/util */ \"./src/components/VDatePicker/util/index.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VTimePicker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VTimePicker */ \"./src/components/VTimePicker/VTimePicker.ts\");\n\n// Mixins\n\n// Utils\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-time-picker-title',\n props: {\n ampm: Boolean,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: {\n type: String,\n validator: function validator(period) {\n return period === 'am' || period === 'pm';\n }\n },\n readonly: Boolean,\n useSeconds: Boolean,\n selecting: Number\n },\n methods: {\n genTime: function genTime() {\n var hour = this.hour;\n if (this.ampm) {\n hour = hour ? (hour - 1) % 12 + 1 : 12;\n }\n var displayedHour = this.hour == null ? '--' : this.ampm ? String(hour) : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(hour);\n var displayedMinute = this.minute == null ? '--' : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.minute);\n var titleContent = [this.genPickerButton('selecting', _VTimePicker__WEBPACK_IMPORTED_MODULE_4__[\"selectingTimes\"].hour, displayedHour, this.disabled), this.$createElement('span', ':'), this.genPickerButton('selecting', _VTimePicker__WEBPACK_IMPORTED_MODULE_4__[\"selectingTimes\"].minute, displayedMinute, this.disabled)];\n if (this.useSeconds) {\n var displayedSecond = this.second == null ? '--' : Object(_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__[\"pad\"])(this.second);\n titleContent.push(this.$createElement('span', ':'));\n titleContent.push(this.genPickerButton('selecting', _VTimePicker__WEBPACK_IMPORTED_MODULE_4__[\"selectingTimes\"].second, displayedSecond, this.disabled));\n }\n return this.$createElement('div', {\n 'class': 'v-time-picker-title__time'\n }, titleContent);\n },\n genAmPm: function genAmPm() {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-title__ampm'\n }, [this.genPickerButton('period', 'am', 'am', this.disabled || this.readonly), this.genPickerButton('period', 'pm', 'pm', this.disabled || this.readonly)]);\n }\n },\n render: function render(h) {\n var children = [this.genTime()];\n this.ampm && children.push(this.genAmPm());\n return h('div', {\n staticClass: 'v-time-picker-title'\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimePicker/index.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VTimePicker/index.ts ***!\n \\*********************************************/\n/*! exports provided: VTimePicker, VTimePickerClock, VTimePickerTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimePicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimePicker */ \"./src/components/VTimePicker/VTimePicker.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePicker\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimePickerClock */ \"./src/components/VTimePicker/VTimePickerClock.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerClock\", function() { return _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTimePickerTitle */ \"./src/components/VTimePicker/VTimePickerTitle.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerTitle\", function() { return _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VTimePicker: _VTimePicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VTimePickerClock: _VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VTimePickerTitle: _VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/VTimeline.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VTimeline/VTimeline.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_timeline_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_timeline.styl */ \"./src/stylus/components/_timeline.styl\");\n/* harmony import */ var _stylus_components_timeline_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_timeline_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n\n// Mixins\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-timeline',\n props: {\n alignTop: Boolean,\n dense: Boolean\n },\n computed: {\n classes: function classes() {\n return __assign({ 'v-timeline--align-top': this.alignTop, 'v-timeline--dense': this.dense }, this.themeClasses);\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-timeline',\n 'class': this.classes\n }, this.$slots.default);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/VTimelineItem.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VTimeline/VTimelineItem.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Types\n\n// Components\n\n// Mixins\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-timeline-item',\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n fillDot: Boolean,\n hideDot: Boolean,\n icon: String,\n iconColor: String,\n large: Boolean,\n left: Boolean,\n right: Boolean,\n small: Boolean\n },\n computed: {\n hasIcon: function hasIcon() {\n return !!this.icon || !!this.$slots.icon;\n }\n },\n methods: {\n genBody: function genBody() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__body'\n }, this.$slots.default);\n },\n genIcon: function genIcon() {\n if (this.$slots.icon) {\n return this.$slots.icon;\n }\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n color: this.iconColor,\n dark: !this.theme.isDark,\n small: this.small\n }\n }, this.icon);\n },\n genInnerDot: function genInnerDot() {\n var data = this.setBackgroundColor(this.color);\n return this.$createElement('div', __assign({ staticClass: 'v-timeline-item__inner-dot' }, data), [this.hasIcon && this.genIcon()]);\n },\n genDot: function genDot() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__dot',\n class: {\n 'v-timeline-item__dot--small': this.small,\n 'v-timeline-item__dot--large': this.large\n }\n }, [this.genInnerDot()]);\n },\n genOpposite: function genOpposite() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__opposite'\n }, this.$slots.opposite);\n }\n },\n render: function render(h) {\n var children = [this.genBody()];\n if (!this.hideDot) children.unshift(this.genDot());\n if (this.$slots.opposite) children.push(this.genOpposite());\n return h('div', {\n staticClass: 'v-timeline-item',\n class: __assign({ 'v-timeline-item--fill-dot': this.fillDot, 'v-timeline-item--left': this.left, 'v-timeline-item--right': this.right }, this.themeClasses)\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTimeline/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VTimeline/index.ts ***!\n \\*******************************************/\n/*! exports provided: VTimeline, VTimelineItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTimeline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTimeline */ \"./src/components/VTimeline/VTimeline.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimeline\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTimelineItem */ \"./src/components/VTimeline/VTimelineItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimelineItem\", function() { return _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VTimeline: _VTimeline__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VTimelineItem: _VTimelineItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/VToolbar.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/VToolbar/VToolbar.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_toolbar_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_toolbar.styl */ \"./src/stylus/components/_toolbar.styl\");\n/* harmony import */ var _stylus_components_toolbar_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_toolbar_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/applicationable */ \"./src/mixins/applicationable.ts\");\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/ssr-bootable */ \"./src/mixins/ssr-bootable.ts\");\n/* harmony import */ var _directives_scroll__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../directives/scroll */ \"./src/directives/scroll.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Styles\n\n// Mixins\n\n\n\n\n// Directives\n\n\n// Types\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(Object(_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'invertedScroll', 'manualScroll']), _mixins_colorable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_themeable__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-toolbar',\n directives: { Scroll: _directives_scroll__WEBPACK_IMPORTED_MODULE_5__[\"default\"] },\n props: {\n card: Boolean,\n clippedLeft: Boolean,\n clippedRight: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n validator: function validator(v) {\n return !isNaN(parseInt(v));\n }\n },\n invertedScroll: Boolean,\n manualScroll: Boolean,\n prominent: Boolean,\n scrollOffScreen: Boolean,\n /* @deprecated */\n scrollToolbarOffScreen: Boolean,\n scrollTarget: String,\n scrollThreshold: {\n type: Number,\n default: 300\n },\n tabs: Boolean\n },\n data: function data() {\n return {\n activeTimeout: null,\n currentScroll: 0,\n heights: {\n mobileLandscape: 48,\n mobile: 56,\n desktop: 64,\n dense: 48\n },\n isActive: true,\n isExtended: false,\n isScrollingUp: false,\n previousScroll: 0,\n savedScroll: 0,\n target: null\n };\n },\n computed: {\n canScroll: function canScroll() {\n // TODO: remove\n if (this.scrollToolbarOffScreen) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"deprecate\"])('scrollToolbarOffScreen', 'scrollOffScreen', this);\n return true;\n }\n return this.scrollOffScreen || this.invertedScroll;\n },\n computedContentHeight: function computedContentHeight() {\n if (this.height) return parseInt(this.height);\n if (this.dense) return this.heights.dense;\n if (this.prominent || this.$vuetify.breakpoint.mdAndUp) return this.heights.desktop;\n if (this.$vuetify.breakpoint.smAndDown && this.$vuetify.breakpoint.width > this.$vuetify.breakpoint.height) return this.heights.mobileLandscape;\n return this.heights.mobile;\n },\n computedExtensionHeight: function computedExtensionHeight() {\n if (this.tabs) return 48;\n if (this.extensionHeight) return parseInt(this.extensionHeight);\n return this.computedContentHeight;\n },\n computedHeight: function computedHeight() {\n if (!this.isExtended) return this.computedContentHeight;\n return this.computedContentHeight + this.computedExtensionHeight;\n },\n computedMarginTop: function computedMarginTop() {\n if (!this.app) return 0;\n return this.$vuetify.application.bar;\n },\n classes: function classes() {\n return __assign({ 'v-toolbar': true, 'elevation-0': this.flat || !this.isActive && !this.tabs && this.canScroll, 'v-toolbar--absolute': this.absolute, 'v-toolbar--card': this.card, 'v-toolbar--clipped': this.clippedLeft || this.clippedRight, 'v-toolbar--dense': this.dense, 'v-toolbar--extended': this.isExtended, 'v-toolbar--fixed': !this.absolute && (this.app || this.fixed), 'v-toolbar--floating': this.floating, 'v-toolbar--prominent': this.prominent }, this.themeClasses);\n },\n computedPaddingLeft: function computedPaddingLeft() {\n if (!this.app || this.clippedLeft) return 0;\n return this.$vuetify.application.left;\n },\n computedPaddingRight: function computedPaddingRight() {\n if (!this.app || this.clippedRight) return 0;\n return this.$vuetify.application.right;\n },\n computedTransform: function computedTransform() {\n return !this.isActive ? this.canScroll ? -this.computedContentHeight : -this.computedHeight : 0;\n },\n currentThreshold: function currentThreshold() {\n return Math.abs(this.currentScroll - this.savedScroll);\n },\n styles: function styles() {\n return {\n marginTop: this.computedMarginTop + \"px\",\n paddingRight: this.computedPaddingRight + \"px\",\n paddingLeft: this.computedPaddingLeft + \"px\",\n transform: \"translateY(\" + this.computedTransform + \"px)\"\n };\n }\n },\n watch: {\n currentThreshold: function currentThreshold(val) {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.scrollThreshold;\n return;\n }\n if (val < this.scrollThreshold || !this.isBooted) return;\n this.isActive = this.isScrollingUp;\n this.savedScroll = this.currentScroll;\n },\n isActive: function isActive() {\n this.savedScroll = 0;\n },\n invertedScroll: function invertedScroll(val) {\n this.isActive = !val;\n },\n manualScroll: function manualScroll(val) {\n this.isActive = !val;\n },\n isScrollingUp: function isScrollingUp() {\n this.savedScroll = this.savedScroll || this.currentScroll;\n }\n },\n created: function created() {\n if (this.invertedScroll || this.manualScroll) this.isActive = false;\n },\n mounted: function mounted() {\n if (this.scrollTarget) {\n this.target = document.querySelector(this.scrollTarget);\n }\n },\n methods: {\n onScroll: function onScroll() {\n if (!this.canScroll || this.manualScroll || typeof window === 'undefined') return;\n this.currentScroll = this.target ? this.target.scrollTop : window.pageYOffset;\n this.isScrollingUp = this.currentScroll < this.previousScroll;\n this.previousScroll = this.currentScroll;\n },\n updateApplication: function updateApplication() {\n return this.invertedScroll || this.manualScroll ? 0 : this.computedHeight;\n }\n },\n render: function render(h) {\n this.isExtended = this.extended || !!this.$slots.extension;\n var children = [];\n var data = this.setBackgroundColor(this.color, {\n 'class': this.classes,\n style: this.styles,\n on: this.$listeners\n });\n data.directives = [{\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll\n }];\n children.push(h('div', {\n staticClass: 'v-toolbar__content',\n style: { height: this.computedContentHeight + \"px\" },\n ref: 'content'\n }, this.$slots.default));\n if (this.isExtended) {\n children.push(h('div', {\n staticClass: 'v-toolbar__extension',\n style: { height: this.computedExtensionHeight + \"px\" }\n }, this.$slots.extension));\n }\n return h('nav', data, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/VToolbarSideIcon.ts\":\n/*!*****************************************************!*\\\n !*** ./src/components/VToolbar/VToolbarSideIcon.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend({\n name: 'v-toolbar-side-icon',\n functional: true,\n render: function render(h, _a) {\n var slots = _a.slots,\n listeners = _a.listeners,\n props = _a.props,\n data = _a.data;\n var classes = data.staticClass ? data.staticClass + \" v-toolbar__side-icon\" : 'v-toolbar__side-icon';\n var d = Object.assign(data, {\n staticClass: classes,\n props: Object.assign(props, {\n icon: true\n }),\n on: listeners\n });\n var defaultSlot = slots().default;\n return h(_VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"], d, defaultSlot || [h(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], '$vuetify.icons.menu')]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VToolbar/index.ts\":\n/*!******************************************!*\\\n !*** ./src/components/VToolbar/index.ts ***!\n \\******************************************/\n/*! exports provided: VToolbar, VToolbarSideIcon, VToolbarTitle, VToolbarItems, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VToolbarTitle\", function() { return VToolbarTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VToolbarItems\", function() { return VToolbarItems; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _VToolbar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VToolbar */ \"./src/components/VToolbar/VToolbar.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbar\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _VToolbarSideIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VToolbarSideIcon */ \"./src/components/VToolbar/VToolbarSideIcon.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarSideIcon\", function() { return _VToolbarSideIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\nvar VToolbarTitle = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-toolbar__title');\nvar VToolbarItems = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleFunctional\"])('v-toolbar__items');\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VToolbar: _VToolbar__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n VToolbarItems: VToolbarItems,\n VToolbarTitle: VToolbarTitle,\n VToolbarSideIcon: _VToolbarSideIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTooltip/VTooltip.js\":\n/*!*********************************************!*\\\n !*** ./src/components/VTooltip/VTooltip.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_tooltips_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_tooltips.styl */ \"./src/stylus/components/_tooltips.styl\");\n/* harmony import */ var _stylus_components_tooltips_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_tooltips_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _mixins_delayable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/delayable */ \"./src/mixins/delayable.ts\");\n/* harmony import */ var _mixins_dependent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/dependent */ \"./src/mixins/dependent.ts\");\n/* harmony import */ var _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/detachable */ \"./src/mixins/detachable.js\");\n/* harmony import */ var _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mixins/menuable */ \"./src/mixins/menuable.js\");\n/* harmony import */ var _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../mixins/toggleable */ \"./src/mixins/toggleable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n// Mixins\n\n\n\n\n\n\n// Helpers\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'v-tooltip',\n mixins: [_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _mixins_delayable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _mixins_dependent__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _mixins_detachable__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _mixins_menuable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n props: {\n closeDelay: {\n type: [Number, String],\n default: 200\n },\n debounce: {\n type: [Number, String],\n default: 0\n },\n disabled: Boolean,\n fixed: {\n type: Boolean,\n default: true\n },\n openDelay: {\n type: [Number, String],\n default: 200\n },\n tag: {\n type: String,\n default: 'span'\n },\n transition: String,\n zIndex: {\n default: null\n }\n },\n data: function data() {\n return {\n calculatedMinWidth: 0,\n closeDependents: false\n };\n },\n computed: {\n calculatedLeft: function calculatedLeft() {\n var _a = this.dimensions,\n activator = _a.activator,\n content = _a.content;\n var unknown = !this.bottom && !this.left && !this.top && !this.right;\n var activatorLeft = this.isAttached ? activator.offsetLeft : activator.left;\n var left = 0;\n if (this.top || this.bottom || unknown) {\n left = activatorLeft + activator.width / 2 - content.width / 2;\n } else if (this.left || this.right) {\n left = activatorLeft + (this.right ? activator.width : -content.width) + (this.right ? 10 : -10);\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n if (this.nudgeRight) left += parseInt(this.nudgeRight);\n return this.calcXOverflow(left, this.dimensions.content.width) + \"px\";\n },\n calculatedTop: function calculatedTop() {\n var _a = this.dimensions,\n activator = _a.activator,\n content = _a.content;\n var activatorTop = this.isAttached ? activator.offsetTop : activator.top;\n var top = 0;\n if (this.top || this.bottom) {\n top = activatorTop + (this.bottom ? activator.height : -content.height) + (this.bottom ? 10 : -10);\n } else if (this.left || this.right) {\n top = activatorTop + activator.height / 2 - content.height / 2;\n }\n if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n return this.calcYOverflow(top + this.pageYOffset) + \"px\";\n },\n classes: function classes() {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left\n };\n },\n computedTransition: function computedTransition() {\n if (this.transition) return this.transition;\n if (this.top) return 'slide-y-reverse-transition';\n if (this.right) return 'slide-x-transition';\n if (this.bottom) return 'slide-y-transition';\n if (this.left) return 'slide-x-reverse-transition';\n return '';\n },\n offsetY: function offsetY() {\n return this.top || this.bottom;\n },\n offsetX: function offsetX() {\n return this.left || this.right;\n },\n styles: function styles() {\n return {\n left: this.calculatedLeft,\n maxWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.maxWidth),\n minWidth: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"convertToUnit\"])(this.minWidth),\n opacity: this.isActive ? 0.9 : 0,\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex\n };\n }\n },\n beforeMount: function beforeMount() {\n var _this = this;\n this.$nextTick(function () {\n _this.value && _this.callActivate();\n });\n },\n mounted: function mounted() {\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlotType\"])(this, 'activator', true) === 'v-slot') {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"consoleError\"])(\"v-tooltip's activator slot must be bound, try '<template #activator=\\\"data\\\"><v-btn v-on=\\\"data.on>'\", this);\n }\n },\n methods: {\n activate: function activate() {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions();\n // Start the transition\n requestAnimationFrame(this.startTransition);\n },\n genActivator: function genActivator() {\n var _this = this;\n var listeners = this.disabled ? {} : {\n mouseenter: function mouseenter(e) {\n _this.getActivator(e);\n _this.runDelay('open');\n },\n mouseleave: function mouseleave(e) {\n _this.getActivator(e);\n _this.runDelay('close');\n }\n };\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_7__[\"getSlotType\"])(this, 'activator') === 'scoped') {\n var activator = this.$scopedSlots.activator({ on: listeners });\n this.activatorNode = activator;\n return activator;\n }\n return this.$createElement('span', {\n on: listeners,\n ref: 'activator'\n }, this.$slots.activator);\n }\n },\n render: function render(h) {\n var _a;\n var tooltip = h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tooltip__content',\n 'class': (_a = {}, _a[this.contentClass] = true, _a['menuable__content__active'] = this.isActive, _a['v-tooltip__content--fixed'] = this.activatorFixed, _a),\n style: this.styles,\n attrs: this.getScopeIdAttrs(),\n directives: [{\n name: 'show',\n value: this.isContentActive\n }],\n ref: 'content'\n }), this.showLazyContent(this.$slots.default));\n return h(this.tag, {\n staticClass: 'v-tooltip',\n 'class': this.classes\n }, [h('transition', {\n props: {\n name: this.computedTransition\n }\n }, [tooltip]), this.genActivator()]);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTooltip/index.js\":\n/*!******************************************!*\\\n !*** ./src/components/VTooltip/index.js ***!\n \\******************************************/\n/*! exports provided: VTooltip, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTooltip */ \"./src/components/VTooltip/VTooltip.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTooltip\", function() { return _VTooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VTooltip__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/VTreeview.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VTreeview/VTreeview.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_treeview_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_treeview.styl */ \"./src/stylus/components/_treeview.styl\");\n/* harmony import */ var _stylus_components_treeview_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_treeview_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTreeviewNode */ \"./src/components/VTreeview/VTreeviewNode.ts\");\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/filterTreeItems */ \"./src/components/VTreeview/util/filterTreeItems.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\nvar __values = undefined && undefined.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\n// Styles\n\n// Components\n\n// Mixins\n\n\n// Utils\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"provide\"])('treeview'), _mixins_themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'v-treeview',\n provide: function provide() {\n return { treeview: this };\n },\n props: __assign({ active: {\n type: Array,\n default: function _default() {\n return [];\n }\n }, items: {\n type: Array,\n default: function _default() {\n return [];\n }\n }, hoverable: Boolean, multipleActive: Boolean, open: {\n type: Array,\n default: function _default() {\n return [];\n }\n }, openAll: Boolean, returnObject: {\n type: Boolean,\n default: false // TODO: Should be true in next major\n }, value: {\n type: Array,\n default: function _default() {\n return [];\n }\n }, search: String, filter: Function }, _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"VTreeviewNodeProps\"]),\n data: function data() {\n return {\n nodes: {},\n selectedCache: new Set(),\n activeCache: new Set(),\n openCache: new Set()\n };\n },\n computed: {\n excludedItems: function excludedItems() {\n var excluded = new Set();\n if (!this.search) return excluded;\n for (var i = 0; i < this.items.length; i++) {\n Object(_util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__[\"filterTreeItems\"])(this.filter || _util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__[\"filterTreeItem\"], this.items[i], this.search, this.itemKey, this.itemText, this.itemChildren, excluded);\n }\n return excluded;\n }\n },\n watch: {\n items: {\n handler: function handler() {\n var _this = this;\n var oldKeys = Object.keys(this.nodes).map(function (k) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(_this.nodes[k].item, _this.itemKey);\n });\n var newKeys = this.getKeys(this.items);\n var diff = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"arrayDiff\"])(newKeys, oldKeys);\n // We only want to do stuff if items have changed\n if (!diff.length && newKeys.length < oldKeys.length) return;\n // If nodes are removed we need to clear them from this.nodes\n diff.forEach(function (k) {\n return delete _this.nodes[k];\n });\n var oldSelectedCache = __spread(this.selectedCache);\n this.selectedCache = new Set();\n this.activeCache = new Set();\n this.openCache = new Set();\n this.buildTree(this.items);\n // Only emit selected if selection has changed\n // as a result of items changing. This fixes a\n // potential double emit when selecting a node\n // with dynamic children\n if (!Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(oldSelectedCache, __spread(this.selectedCache))) this.emitSelected();\n },\n deep: true\n },\n active: function active(value) {\n this.handleNodeCacheWatcher(value, this.activeCache, this.updateActive, this.emitActive);\n },\n value: function value(_value) {\n this.handleNodeCacheWatcher(_value, this.selectedCache, this.updateSelected, this.emitSelected);\n },\n open: function open(value) {\n this.handleNodeCacheWatcher(value, this.openCache, this.updateOpen, this.emitOpen);\n }\n },\n created: function created() {\n var _this = this;\n this.buildTree(this.items);\n this.value.forEach(function (key) {\n return _this.updateSelected(key, true);\n });\n this.emitSelected();\n this.active.forEach(function (key) {\n return _this.updateActive(key, true);\n });\n this.emitActive();\n },\n mounted: function mounted() {\n var _this = this;\n // Save the developer from themselves\n if (this.$slots.prepend || this.$slots.append) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_6__[\"consoleWarn\"])('The prepend and append slots require a slot-scope attribute', this);\n }\n if (this.openAll) {\n this.updateAll(true);\n } else {\n this.open.forEach(function (key) {\n return _this.updateOpen(key, true);\n });\n this.emitOpen();\n }\n },\n methods: {\n /** @public */\n updateAll: function updateAll(value) {\n var _this = this;\n Object.keys(this.nodes).forEach(function (key) {\n return _this.updateOpen(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(_this.nodes[key].item, _this.itemKey), value);\n });\n this.emitOpen();\n },\n getKeys: function getKeys(items, keys) {\n if (keys === void 0) {\n keys = [];\n }\n for (var i = 0; i < items.length; i++) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(items[i], this.itemKey);\n keys.push(key);\n var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(items[i], this.itemChildren);\n if (children) {\n keys.push.apply(keys, __spread(this.getKeys(children)));\n }\n }\n return keys;\n },\n buildTree: function buildTree(items, parent) {\n var _this = this;\n if (parent === void 0) {\n parent = null;\n }\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, this.itemKey);\n var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(item, this.itemChildren, []);\n var oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {\n isSelected: false, isIndeterminate: false, isActive: false, isOpen: false, vnode: null\n };\n var node = {\n vnode: oldNode.vnode,\n parent: parent,\n children: children.map(function (c) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(c, _this.itemKey);\n }),\n item: item\n };\n this.buildTree(children, key);\n // This fixed bug with dynamic children resetting selected parent state\n if (!this.nodes.hasOwnProperty(key) && parent !== null && this.nodes.hasOwnProperty(parent)) {\n node.isSelected = this.nodes[parent].isSelected;\n node.isIndeterminate = this.nodes[parent].isIndeterminate;\n } else {\n node.isSelected = oldNode.isSelected;\n node.isIndeterminate = oldNode.isIndeterminate;\n }\n node.isActive = oldNode.isActive;\n node.isOpen = oldNode.isOpen;\n this.nodes[key] = !children.length ? node : this.calculateState(node, this.nodes);\n // Don't forget to rebuild cache\n if (this.nodes[key].isSelected) this.selectedCache.add(key);\n if (this.nodes[key].isActive) this.activeCache.add(key);\n if (this.nodes[key].isOpen) this.openCache.add(key);\n this.updateVnodeState(key);\n }\n },\n calculateState: function calculateState(node, state) {\n var counts = node.children.reduce(function (counts, child) {\n counts[0] += +Boolean(state[child].isSelected);\n counts[1] += +Boolean(state[child].isIndeterminate);\n return counts;\n }, [0, 0]);\n node.isSelected = !!node.children.length && counts[0] === node.children.length;\n node.isIndeterminate = !node.isSelected && (counts[0] > 0 || counts[1] > 0);\n return node;\n },\n emitOpen: function emitOpen() {\n this.emitNodeCache('update:open', this.openCache);\n },\n emitSelected: function emitSelected() {\n this.emitNodeCache('input', this.selectedCache);\n },\n emitActive: function emitActive() {\n this.emitNodeCache('update:active', this.activeCache);\n },\n emitNodeCache: function emitNodeCache(event, cache) {\n var _this = this;\n this.$emit(event, this.returnObject ? __spread(cache).map(function (key) {\n return _this.nodes[key].item;\n }) : __spread(cache));\n },\n handleNodeCacheWatcher: function handleNodeCacheWatcher(value, cache, updateFn, emitFn) {\n var _this = this;\n value = this.returnObject ? value.map(function (v) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(v, _this.itemKey);\n }) : value;\n var old = __spread(cache);\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(old, value)) return;\n old.forEach(function (key) {\n return updateFn(key, false);\n });\n value.forEach(function (key) {\n return updateFn(key, true);\n });\n emitFn();\n },\n getDescendants: function getDescendants(key, descendants) {\n if (descendants === void 0) {\n descendants = [];\n }\n var children = this.nodes[key].children;\n descendants.push.apply(descendants, __spread(children));\n for (var i = 0; i < children.length; i++) {\n descendants = this.getDescendants(children[i], descendants);\n }\n return descendants;\n },\n getParents: function getParents(key) {\n var parent = this.nodes[key].parent;\n var parents = [];\n while (parent !== null) {\n parents.push(parent);\n parent = this.nodes[parent].parent;\n }\n return parents;\n },\n register: function register(node) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemKey);\n this.nodes[key].vnode = node;\n this.updateVnodeState(key);\n },\n unregister: function unregister(node) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemKey);\n if (this.nodes[key]) this.nodes[key].vnode = null;\n },\n updateActive: function updateActive(key, isActive) {\n var _this = this;\n if (!this.nodes.hasOwnProperty(key)) return;\n if (!this.multipleActive) {\n this.activeCache.forEach(function (active) {\n _this.nodes[active].isActive = false;\n _this.updateVnodeState(active);\n _this.activeCache.delete(active);\n });\n }\n var node = this.nodes[key];\n if (!node) return;\n if (isActive) this.activeCache.add(key);else this.activeCache.delete(key);\n node.isActive = isActive;\n this.updateVnodeState(key);\n },\n updateSelected: function updateSelected(key, isSelected) {\n var _this = this;\n var e_1, _a;\n if (!this.nodes.hasOwnProperty(key)) return;\n var changed = new Map();\n var descendants = __spread([key], this.getDescendants(key));\n descendants.forEach(function (descendant) {\n _this.nodes[descendant].isSelected = isSelected;\n _this.nodes[descendant].isIndeterminate = false;\n changed.set(descendant, isSelected);\n });\n var parents = this.getParents(key);\n parents.forEach(function (parent) {\n _this.nodes[parent] = _this.calculateState(_this.nodes[parent], _this.nodes);\n changed.set(parent, _this.nodes[parent].isSelected);\n });\n var all = __spread([key], descendants, parents);\n all.forEach(this.updateVnodeState);\n try {\n for (var _b = __values(changed.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2),\n key_1 = _d[0],\n value = _d[1];\n value === true ? this.selectedCache.add(key_1) : this.selectedCache.delete(key_1);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n },\n updateOpen: function updateOpen(key, isOpen) {\n var _this = this;\n if (!this.nodes.hasOwnProperty(key)) return;\n var node = this.nodes[key];\n var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getObjectValueByPath\"])(node.item, this.itemChildren);\n if (children && !children.length && node.vnode && !node.vnode.hasLoaded) {\n node.vnode.checkChildren().then(function () {\n return _this.updateOpen(key, isOpen);\n });\n } else if (children && children.length) {\n node.isOpen = isOpen;\n node.isOpen ? this.openCache.add(key) : this.openCache.delete(key);\n this.updateVnodeState(key);\n }\n },\n updateVnodeState: function updateVnodeState(key) {\n var node = this.nodes[key];\n if (node && node.vnode) {\n node.vnode.isSelected = node.isSelected;\n node.vnode.isIndeterminate = node.isIndeterminate;\n node.vnode.isActive = node.isActive;\n node.vnode.isOpen = node.isOpen;\n }\n },\n isExcluded: function isExcluded(key) {\n return !!this.search && this.excludedItems.has(key);\n }\n },\n render: function render(h) {\n var children = this.items.length ? this.items.map(_VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"].options.methods.genChild.bind(this))\n /* istanbul ignore next */\n : this.$slots.default; // TODO: remove type annotation with TS 3.2\n return h('div', {\n staticClass: 'v-treeview',\n class: __assign({ 'v-treeview--hoverable': this.hoverable }, this.themeClasses)\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/VTreeviewNode.ts\":\n/*!***************************************************!*\\\n !*** ./src/components/VTreeview/VTreeviewNode.ts ***!\n \\***************************************************/\n/*! exports provided: VTreeviewNodeProps, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNodeProps\", function() { return VTreeviewNodeProps; });\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transitions */ \"./src/components/transitions/index.js\");\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _VTreeviewNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VTreeviewNode */ \"./src/components/VTreeview/VTreeviewNode.ts\");\n/* harmony import */ var _mixins_registrable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mixins/registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Components\n\n\n\n// Mixins\n\n// Utils\n\n\nvar VTreeviewNodeProps = {\n activatable: Boolean,\n activeClass: {\n type: String,\n default: 'v-treeview-node--active'\n },\n selectable: Boolean,\n selectedColor: {\n type: String,\n default: 'accent'\n },\n indeterminateIcon: {\n type: String,\n default: '$vuetify.icons.checkboxIndeterminate'\n },\n onIcon: {\n type: String,\n default: '$vuetify.icons.checkboxOn'\n },\n offIcon: {\n type: String,\n default: '$vuetify.icons.checkboxOff'\n },\n expandIcon: {\n type: String,\n default: '$vuetify.icons.subgroup'\n },\n loadingIcon: {\n type: String,\n default: '$vuetify.icons.loading'\n },\n itemKey: {\n type: String,\n default: 'id'\n },\n itemText: {\n type: String,\n default: 'name'\n },\n itemChildren: {\n type: String,\n default: 'children'\n },\n loadChildren: Function,\n openOnClick: Boolean,\n transition: Boolean\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Object(_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__[\"inject\"])('treeview')\n/* @vue/component */\n).extend({\n name: 'v-treeview-node',\n inject: {\n treeview: {\n default: null\n }\n },\n props: __assign({ item: {\n type: Object,\n default: function _default() {\n return null;\n }\n } }, VTreeviewNodeProps),\n data: function data() {\n return {\n isOpen: false,\n isSelected: false,\n isIndeterminate: false,\n isActive: false,\n isLoading: false,\n hasLoaded: false\n };\n },\n computed: {\n key: function key() {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemKey);\n },\n children: function children() {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemChildren);\n },\n text: function text() {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(this.item, this.itemText);\n },\n scopedProps: function scopedProps() {\n return {\n item: this.item,\n leaf: !this.children,\n selected: this.isSelected,\n indeterminate: this.isIndeterminate,\n active: this.isActive,\n open: this.isOpen\n };\n },\n computedIcon: function computedIcon() {\n if (this.isIndeterminate) return this.indeterminateIcon;else if (this.isSelected) return this.onIcon;else return this.offIcon;\n },\n hasChildren: function hasChildren() {\n return !!this.children && (!!this.children.length || !!this.loadChildren);\n }\n },\n created: function created() {\n this.treeview.register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.treeview.unregister(this);\n },\n methods: {\n checkChildren: function checkChildren() {\n var _this = this;\n return new Promise(function (resolve) {\n // TODO: Potential issue with always trying\n // to load children if response is empty?\n if (!_this.children || _this.children.length || !_this.loadChildren || _this.hasLoaded) return resolve();\n _this.isLoading = true;\n resolve(_this.loadChildren(_this.item));\n }).then(function () {\n _this.isLoading = false;\n _this.hasLoaded = true;\n });\n },\n open: function open() {\n this.isOpen = !this.isOpen;\n this.treeview.updateOpen(this.key, this.isOpen);\n this.treeview.emitOpen();\n },\n genLabel: function genLabel() {\n var children = [];\n if (this.$scopedSlots.label) children.push(this.$scopedSlots.label(this.scopedProps));else children.push(this.text);\n return this.$createElement('div', {\n slot: 'label',\n staticClass: 'v-treeview-node__label'\n }, children);\n },\n genContent: function genContent() {\n var children = [this.$scopedSlots.prepend && this.$scopedSlots.prepend(this.scopedProps), this.genLabel(), this.$scopedSlots.append && this.$scopedSlots.append(this.scopedProps)];\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__content'\n }, children);\n },\n genToggle: function genToggle() {\n var _this = this;\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"VIcon\"], {\n staticClass: 'v-treeview-node__toggle',\n class: {\n 'v-treeview-node__toggle--open': this.isOpen,\n 'v-treeview-node__toggle--loading': this.isLoading\n },\n slot: 'prepend',\n on: {\n click: function click(e) {\n e.stopPropagation();\n if (_this.isLoading) return;\n _this.checkChildren().then(function () {\n return _this.open();\n });\n }\n }\n }, [this.isLoading ? this.loadingIcon : this.expandIcon]);\n },\n genCheckbox: function genCheckbox() {\n var _this = this;\n return this.$createElement(_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"VIcon\"], {\n staticClass: 'v-treeview-node__checkbox',\n props: {\n color: this.isSelected ? this.selectedColor : undefined\n },\n on: {\n click: function click(e) {\n e.stopPropagation();\n if (_this.isLoading) return;\n _this.checkChildren().then(function () {\n // We nextTick here so that items watch in VTreeview has a chance to run first\n _this.$nextTick(function () {\n _this.isSelected = !_this.isSelected;\n _this.isIndeterminate = false;\n _this.treeview.updateSelected(_this.key, _this.isSelected);\n _this.treeview.emitSelected();\n });\n });\n }\n }\n }, [this.computedIcon]);\n },\n genNode: function genNode() {\n var _this = this;\n var _a;\n var children = [this.genContent()];\n if (this.selectable) children.unshift(this.genCheckbox());\n if (this.hasChildren) children.unshift(this.genToggle());\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__root',\n class: (_a = {}, _a[this.activeClass] = this.isActive, _a),\n on: {\n click: function click() {\n if (_this.openOnClick && _this.children) {\n _this.open();\n } else if (_this.activatable) {\n _this.isActive = !_this.isActive;\n _this.treeview.updateActive(_this.key, _this.isActive);\n _this.treeview.emitActive();\n }\n }\n }\n }, children);\n },\n genChild: function genChild(item) {\n return this.$createElement(_VTreeviewNode__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__[\"getObjectValueByPath\"])(item, this.itemKey),\n props: {\n activatable: this.activatable,\n activeClass: this.activeClass,\n item: item,\n selectable: this.selectable,\n selectedColor: this.selectedColor,\n expandIcon: this.expandIcon,\n indeterminateIcon: this.indeterminateIcon,\n offIcon: this.offIcon,\n onIcon: this.onIcon,\n loadingIcon: this.loadingIcon,\n itemKey: this.itemKey,\n itemText: this.itemText,\n itemChildren: this.itemChildren,\n loadChildren: this.loadChildren,\n transition: this.transition,\n openOnClick: this.openOnClick\n },\n scopedSlots: this.$scopedSlots\n });\n },\n genChildrenWrapper: function genChildrenWrapper() {\n if (!this.isOpen || !this.children) return null;\n var children = [this.children.map(this.genChild)];\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__children'\n }, children);\n },\n genTransition: function genTransition() {\n return this.$createElement(_transitions__WEBPACK_IMPORTED_MODULE_0__[\"VExpandTransition\"], [this.genChildrenWrapper()]);\n }\n },\n render: function render(h) {\n var children = [this.genNode()];\n if (this.transition) children.push(this.genTransition());else children.push(this.genChildrenWrapper());\n return h('div', {\n staticClass: 'v-treeview-node',\n class: {\n 'v-treeview-node--leaf': !this.hasChildren,\n 'v-treeview-node--click': this.openOnClick,\n 'v-treeview-node--selected': this.isSelected,\n 'v-treeview-node--excluded': this.treeview.isExcluded(this.key)\n }\n }, children);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/index.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VTreeview/index.ts ***!\n \\*******************************************/\n/*! exports provided: VTreeview, VTreeviewNode, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VTreeview__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VTreeview */ \"./src/components/VTreeview/VTreeview.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeview\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VTreeviewNode */ \"./src/components/VTreeview/VTreeviewNode.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNode\", function() { return _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VTreeview: _VTreeview__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VTreeviewNode: _VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/VTreeview/util/filterTreeItems.ts\":\n/*!**********************************************************!*\\\n !*** ./src/components/VTreeview/util/filterTreeItems.ts ***!\n \\**********************************************************/\n/*! exports provided: filterTreeItem, filterTreeItems */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterTreeItem\", function() { return filterTreeItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterTreeItems\", function() { return filterTreeItems; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\n\nfunction filterTreeItem(item, search, textKey) {\n var text = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, textKey);\n return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n}\nfunction filterTreeItems(filter, item, search, idKey, textKey, childrenKey, excluded) {\n if (filter(item, search, textKey)) {\n return true;\n }\n var children = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, childrenKey);\n if (children) {\n var match = false;\n for (var i = 0; i < children.length; i++) {\n if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {\n match = true;\n }\n }\n if (match) return true;\n }\n excluded.add(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getObjectValueByPath\"])(item, idKey));\n return false;\n}\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/VWindow.ts\":\n/*!*******************************************!*\\\n !*** ./src/components/VWindow/VWindow.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_windows_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../stylus/components/_windows.styl */ \"./src/stylus/components/_windows.styl\");\n/* harmony import */ var _stylus_components_windows_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_windows_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch.ts\");\n// Styles\n\n// Components\n\n// Directives\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__[\"BaseItemGroup\"].extend({\n name: 'v-window',\n provide: function provide() {\n return {\n windowGroup: this\n };\n },\n directives: { Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_2__[\"default\"] },\n props: {\n mandatory: {\n type: Boolean,\n default: true\n },\n reverse: {\n type: Boolean,\n default: undefined\n },\n touch: Object,\n touchless: Boolean,\n value: {\n required: false\n },\n vertical: Boolean\n },\n data: function data() {\n return {\n internalHeight: undefined,\n isActive: false,\n isBooted: false,\n isReverse: false\n };\n },\n computed: {\n computedTransition: function computedTransition() {\n if (!this.isBooted) return '';\n var axis = this.vertical ? 'y' : 'x';\n var direction = this.internalReverse === !this.$vuetify.rtl ? '-reverse' : '';\n return \"v-window-\" + axis + direction + \"-transition\";\n },\n internalIndex: function internalIndex() {\n var _this = this;\n return this.items.findIndex(function (item, i) {\n return _this.internalValue === _this.getValue(item, i);\n });\n },\n internalReverse: function internalReverse() {\n if (this.reverse !== undefined) return this.reverse;\n return this.isReverse;\n }\n },\n watch: {\n internalIndex: 'updateReverse'\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n return _this.isBooted = true;\n });\n },\n methods: {\n genContainer: function genContainer() {\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive\n },\n style: {\n height: this.internalHeight\n }\n }, this.$slots.default);\n },\n next: function next() {\n this.isReverse = false;\n var nextIndex = (this.internalIndex + 1) % this.items.length;\n var item = this.items[nextIndex];\n this.internalValue = this.getValue(item, nextIndex);\n },\n prev: function prev() {\n this.isReverse = true;\n var lastIndex = (this.internalIndex + this.items.length - 1) % this.items.length;\n var item = this.items[lastIndex];\n this.internalValue = this.getValue(item, lastIndex);\n },\n updateReverse: function updateReverse(val, oldVal) {\n this.isReverse = val < oldVal;\n }\n },\n render: function render(h) {\n var data = {\n staticClass: 'v-window',\n directives: []\n };\n if (!this.touchless) {\n var value = this.touch || {\n left: this.next,\n right: this.prev\n };\n data.directives.push({\n name: 'touch',\n value: value\n });\n }\n return h('div', data, [this.genContainer()]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/VWindowItem.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/VWindow/VWindowItem.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_bootable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/bootable */ \"./src/mixins/bootable.ts\");\n/* harmony import */ var _mixins_groupable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins/groupable */ \"./src/mixins/groupable.ts\");\n/* harmony import */ var _directives_touch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../directives/touch */ \"./src/directives/touch.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n\n\n// Directives\n\n// Utilities\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_mixins_bootable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], Object(_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__[\"factory\"])('windowGroup', 'v-window-item', 'v-window')\n/* @vue/component */\n).extend({\n name: 'v-window-item',\n directives: {\n Touch: _directives_touch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n props: {\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n value: {\n required: false\n }\n },\n data: function data() {\n return {\n done: null,\n isActive: false,\n wasCancelled: false\n };\n },\n computed: {\n computedTransition: function computedTransition() {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined' ? this.transition || '' : this.windowGroup.computedTransition;\n }\n return typeof this.reverseTransition !== 'undefined' ? this.reverseTransition || '' : this.windowGroup.computedTransition;\n }\n },\n mounted: function mounted() {\n this.$el.addEventListener('transitionend', this.onTransitionEnd, false);\n },\n beforeDestroy: function beforeDestroy() {\n this.$el.removeEventListener('transitionend', this.onTransitionEnd, false);\n },\n methods: {\n genDefaultSlot: function genDefaultSlot() {\n return this.$slots.default;\n },\n onAfterEnter: function onAfterEnter() {\n var _this = this;\n if (this.wasCancelled) {\n this.wasCancelled = false;\n return;\n }\n requestAnimationFrame(function () {\n _this.windowGroup.internalHeight = undefined;\n _this.windowGroup.isActive = false;\n });\n },\n onBeforeEnter: function onBeforeEnter() {\n this.windowGroup.isActive = true;\n },\n onLeave: function onLeave(el) {\n this.windowGroup.internalHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(el.clientHeight);\n },\n onEnterCancelled: function onEnterCancelled() {\n this.wasCancelled = true;\n },\n onEnter: function onEnter(el, done) {\n var _this = this;\n var isBooted = this.windowGroup.isBooted;\n if (isBooted) this.done = done;\n requestAnimationFrame(function () {\n if (!_this.computedTransition) return done();\n _this.windowGroup.internalHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__[\"convertToUnit\"])(el.clientHeight);\n // On initial render, there is no transition\n // Vue leaves a `enter` transition class\n // if done is called too fast\n !isBooted && setTimeout(done, 100);\n });\n },\n onTransitionEnd: function onTransitionEnd(e) {\n // This ensures we only call done\n // when the element transform\n // completes\n if (e.propertyName !== 'transform' || e.target !== this.$el || !this.done) return;\n this.done();\n this.done = null;\n }\n },\n render: function render(h) {\n var div = h('div', {\n staticClass: 'v-window-item',\n directives: [{\n name: 'show',\n value: this.isActive\n }],\n on: this.$listeners\n }, this.showLazyContent(this.genDefaultSlot()));\n return h('transition', {\n props: {\n name: this.computedTransition\n },\n on: {\n afterEnter: this.onAfterEnter,\n beforeEnter: this.onBeforeEnter,\n leave: this.onLeave,\n enter: this.onEnter,\n enterCancelled: this.onEnterCancelled\n }\n }, [div]);\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/components/VWindow/index.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/VWindow/index.ts ***!\n \\*****************************************/\n/*! exports provided: VWindow, VWindowItem, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VWindow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VWindow */ \"./src/components/VWindow/VWindow.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindow\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _VWindowItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VWindowItem */ \"./src/components/VWindow/VWindowItem.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindowItem\", function() { return _VWindowItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VWindow: _VWindow__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n VWindowItem: _VWindowItem__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/goTo/easing-patterns.ts\":\n/*!********************************************************!*\\\n !*** ./src/components/Vuetify/goTo/easing-patterns.ts ***!\n \\********************************************************/\n/*! exports provided: linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuad\", function() { return easeInQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuad\", function() { return easeOutQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuad\", function() { return easeInOutQuad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInCubic\", function() { return easeInCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutCubic\", function() { return easeOutCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutCubic\", function() { return easeInOutCubic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuart\", function() { return easeInQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuart\", function() { return easeOutQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuart\", function() { return easeInOutQuart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInQuint\", function() { return easeInQuint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeOutQuint\", function() { return easeOutQuint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"easeInOutQuint\", function() { return easeInOutQuint; });\n// linear\nvar linear = function linear(t) {\n return t;\n};\n// accelerating from zero velocity\nvar easeInQuad = function easeInQuad(t) {\n return t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuad = function easeOutQuad(t) {\n return t * (2 - t);\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuad = function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n};\n// accelerating from zero velocity\nvar easeInCubic = function easeInCubic(t) {\n return t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutCubic = function easeOutCubic(t) {\n return --t * t * t + 1;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutCubic = function easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n};\n// accelerating from zero velocity\nvar easeInQuart = function easeInQuart(t) {\n return t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuart = function easeOutQuart(t) {\n return 1 - --t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuart = function easeInOutQuart(t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n};\n// accelerating from zero velocity\nvar easeInQuint = function easeInQuint(t) {\n return t * t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuint = function easeOutQuint(t) {\n return 1 + --t * t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuint = function easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n};\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/goTo/index.ts\":\n/*!**********************************************!*\\\n !*** ./src/components/Vuetify/goTo/index.ts ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return goTo; });\n/* harmony import */ var _easing_patterns__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./easing-patterns */ \"./src/components/Vuetify/goTo/easing-patterns.ts\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./src/components/Vuetify/goTo/util.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\nfunction goTo(_target, _settings) {\n if (_settings === void 0) {\n _settings = {};\n }\n var settings = __assign({ container: document.scrollingElement || document.body || document.documentElement, duration: 500, offset: 0, easing: 'easeInOutCubic', appOffset: true }, _settings);\n var container = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getContainer\"])(settings.container);\n if (settings.appOffset) {\n var isDrawer = container.classList.contains('v-navigation-drawer');\n var isClipped = container.classList.contains('v-navigation-drawer--clipped');\n settings.offset += vue__WEBPACK_IMPORTED_MODULE_2___default.a.prototype.$vuetify.application.bar;\n if (!isDrawer || isClipped) settings.offset += vue__WEBPACK_IMPORTED_MODULE_2___default.a.prototype.$vuetify.application.top;\n }\n var startTime = performance.now();\n var targetLocation = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getOffset\"])(_target) - settings.offset;\n var startLocation = container.scrollTop;\n if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n var ease = typeof settings.easing === 'function' ? settings.easing : _easing_patterns__WEBPACK_IMPORTED_MODULE_0__[settings.easing];\n if (!ease) throw new TypeError(\"Easing function \\\"\" + settings.easing + \"\\\" not found.\");\n // tslint:disable-next-line:promise-must-complete\n return new Promise(function (resolve) {\n return requestAnimationFrame(function step(currentTime) {\n var timeElapsed = currentTime - startTime;\n var progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1);\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));\n var clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight;\n if (progress === 1 || clientHeight + container.scrollTop === container.scrollHeight) {\n return resolve(targetLocation);\n }\n requestAnimationFrame(step);\n });\n });\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/goTo/util.ts\":\n/*!*********************************************!*\\\n !*** ./src/components/Vuetify/goTo/util.ts ***!\n \\*********************************************/\n/*! exports provided: getOffset, getContainer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffset\", function() { return getOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContainer\", function() { return getContainer; });\n// Return target's cumulative offset from the top\nfunction getOffset(target) {\n if (typeof target === 'number') {\n return target;\n }\n var el = $(target);\n if (!el) {\n throw typeof target === 'string' ? new Error(\"Target element \\\"\" + target + \"\\\" not found.\") : new TypeError(\"Target must be a Number/Selector/HTMLElement/VueComponent, received \" + type(target) + \" instead.\");\n }\n var totalOffset = 0;\n while (el) {\n totalOffset += el.offsetTop;\n el = el.offsetParent;\n }\n return totalOffset;\n}\nfunction getContainer(container) {\n var el = $(container);\n if (el) return el;\n throw typeof container === 'string' ? new Error(\"Container element \\\"\" + container + \"\\\" not found.\") : new TypeError(\"Container must be a Selector/HTMLElement/VueComponent, received \" + type(container) + \" instead.\");\n}\nfunction type(el) {\n return el == null ? el : el.constructor.name;\n}\nfunction $(el) {\n if (typeof el === 'string') {\n return document.querySelector(el);\n } else if (el && el._isVue) {\n return el.$el;\n } else if (el instanceof HTMLElement) {\n return el;\n } else {\n return null;\n }\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/index.ts\":\n/*!*****************************************!*\\\n !*** ./src/components/Vuetify/index.ts ***!\n \\*****************************************/\n/*! exports provided: checkVueVersion, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkVueVersion\", function() { return checkVueVersion; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mixins/application */ \"./src/components/Vuetify/mixins/application.ts\");\n/* harmony import */ var _mixins_breakpoint__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mixins/breakpoint */ \"./src/components/Vuetify/mixins/breakpoint.ts\");\n/* harmony import */ var _mixins_theme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mixins/theme */ \"./src/components/Vuetify/mixins/theme.ts\");\n/* harmony import */ var _mixins_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mixins/icons */ \"./src/components/Vuetify/mixins/icons.ts\");\n/* harmony import */ var _mixins_options__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mixins/options */ \"./src/components/Vuetify/mixins/options.ts\");\n/* harmony import */ var _mixins_lang__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mixins/lang */ \"./src/components/Vuetify/mixins/lang.ts\");\n/* harmony import */ var _goTo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./goTo */ \"./src/components/Vuetify/goTo/index.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/console */ \"./src/util/console.ts\");\n\n\n\n\n\n\n\n\n// Utils\n\nvar Vuetify = {\n install: function install(Vue, opts) {\n if (opts === void 0) {\n opts = {};\n }\n if (this.installed) return;\n this.installed = true;\n if (vue__WEBPACK_IMPORTED_MODULE_0___default.a !== Vue) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"consoleError\"])('Multiple instances of Vue detected\\nSee https://github.com/vuetifyjs/vuetify/issues/4068\\n\\nIf you\\'re seeing \"$attrs is readonly\", it\\'s caused by this');\n }\n checkVueVersion(Vue);\n var lang = Object(_mixins_lang__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(opts.lang);\n Vue.prototype.$vuetify = new Vue({\n mixins: [Object(_mixins_breakpoint__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(opts.breakpoint)],\n data: {\n application: _mixins_application__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n dark: false,\n icons: Object(_mixins_icons__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(opts.iconfont, opts.icons),\n lang: lang,\n options: Object(_mixins_options__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(opts.options),\n rtl: opts.rtl,\n theme: Object(_mixins_theme__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(opts.theme)\n },\n methods: {\n goTo: _goTo__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n t: lang.t.bind(lang)\n }\n });\n if (opts.directives) {\n for (var name in opts.directives) {\n Vue.directive(name, opts.directives[name]);\n }\n }\n (function registerComponents(components) {\n if (components) {\n for (var key in components) {\n var component = components[key];\n if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n Vue.component(key, component);\n }\n }\n return true;\n }\n return false;\n })(opts.components);\n },\n version: '1.5.24'\n};\nfunction checkVueVersion(Vue, requiredVue) {\n var vueDep = requiredVue || '^2.5.18';\n var required = vueDep.split('.', 3).map(function (v) {\n return v.replace(/\\D/g, '');\n }).map(Number);\n var actual = Vue.version.split('.', 3).map(function (n) {\n return parseInt(n, 10);\n });\n // Simple semver caret range comparison\n var passes = actual[0] === required[0] && ( // major matches\n actual[1] > required[1] || // minor is greater\n actual[1] === required[1] && actual[2] >= required[2] // or minor is eq and patch is >=\n );\n if (!passes) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_8__[\"consoleWarn\"])(\"Vuetify requires Vue version \" + vueDep);\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vuetify);\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/application.ts\":\n/*!******************************************************!*\\\n !*** ./src/components/Vuetify/mixins/application.ts ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n bar: 0,\n bottom: 0,\n footer: 0,\n insetFooter: 0,\n left: 0,\n right: 0,\n top: 0,\n components: {\n bar: {},\n bottom: {},\n footer: {},\n insetFooter: {},\n left: {},\n right: {},\n top: {}\n },\n bind: function bind(uid, target, value) {\n var _a;\n if (!this.components[target]) return;\n this.components[target] = (_a = {}, _a[uid] = value, _a);\n this.update(target);\n },\n unbind: function unbind(uid, target) {\n if (this.components[target][uid] == null) return;\n delete this.components[target][uid];\n this.update(target);\n },\n update: function update(target) {\n this[target] = Object.values(this.components[target]).reduce(function (acc, cur) {\n return acc + cur;\n }, 0);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/breakpoint.ts\":\n/*!*****************************************************!*\\\n !*** ./src/components/Vuetify/mixins/breakpoint.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return breakpoint; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\nvar BREAKPOINTS_DEFAULTS = {\n thresholds: {\n xs: 600,\n sm: 960,\n md: 1280,\n lg: 1920\n },\n scrollbarWidth: 16\n};\n/**\n * Factory function for the breakpoint mixin.\n */\nfunction breakpoint(opts) {\n if (opts === void 0) {\n opts = {};\n }\n if (!opts) {\n opts = {};\n }\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n data: function data() {\n return __assign({ clientHeight: getClientHeight(), clientWidth: getClientWidth(), resizeTimeout: undefined }, BREAKPOINTS_DEFAULTS, opts);\n },\n computed: {\n breakpoint: function breakpoint() {\n var xs = this.clientWidth < this.thresholds.xs;\n var sm = this.clientWidth < this.thresholds.sm && !xs;\n var md = this.clientWidth < this.thresholds.md - this.scrollbarWidth && !(sm || xs);\n var lg = this.clientWidth < this.thresholds.lg - this.scrollbarWidth && !(md || sm || xs);\n var xl = this.clientWidth >= this.thresholds.lg - this.scrollbarWidth;\n var xsOnly = xs;\n var smOnly = sm;\n var smAndDown = (xs || sm) && !(md || lg || xl);\n var smAndUp = !xs && (sm || md || lg || xl);\n var mdOnly = md;\n var mdAndDown = (xs || sm || md) && !(lg || xl);\n var mdAndUp = !(xs || sm) && (md || lg || xl);\n var lgOnly = lg;\n var lgAndDown = (xs || sm || md || lg) && !xl;\n var lgAndUp = !(xs || sm || md) && (lg || xl);\n var xlOnly = xl;\n var name;\n switch (true) {\n case xs:\n name = 'xs';\n break;\n case sm:\n name = 'sm';\n break;\n case md:\n name = 'md';\n break;\n case lg:\n name = 'lg';\n break;\n default:\n name = 'xl';\n break;\n }\n return {\n // Definite breakpoint.\n xs: xs,\n sm: sm,\n md: md,\n lg: lg,\n xl: xl,\n // Useful e.g. to construct CSS class names dynamically.\n name: name,\n // Breakpoint ranges.\n xsOnly: xsOnly,\n smOnly: smOnly,\n smAndDown: smAndDown,\n smAndUp: smAndUp,\n mdOnly: mdOnly,\n mdAndDown: mdAndDown,\n mdAndUp: mdAndUp,\n lgOnly: lgOnly,\n lgAndDown: lgAndDown,\n lgAndUp: lgAndUp,\n xlOnly: xlOnly,\n // For custom breakpoint logic.\n width: this.clientWidth,\n height: this.clientHeight,\n thresholds: this.thresholds,\n scrollbarWidth: this.scrollbarWidth\n };\n }\n },\n created: function created() {\n if (typeof window === 'undefined') return;\n window.addEventListener('resize', this.onResize, { passive: true });\n },\n beforeDestroy: function beforeDestroy() {\n if (typeof window === 'undefined') return;\n window.removeEventListener('resize', this.onResize);\n },\n methods: {\n onResize: function onResize() {\n clearTimeout(this.resizeTimeout);\n // Added debounce to match what\n // v-resize used to do but was\n // removed due to a memory leak\n // https://github.com/vuetifyjs/vuetify/pull/2997\n this.resizeTimeout = window.setTimeout(this.setDimensions, 200);\n },\n setDimensions: function setDimensions() {\n this.clientHeight = getClientHeight();\n this.clientWidth = getClientWidth();\n }\n }\n });\n}\n// Cross-browser support as described in:\n// https://stackoverflow.com/questions/1248081\nfunction getClientWidth() {\n if (typeof document === 'undefined') return 0; // SSR\n return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\nfunction getClientHeight() {\n if (typeof document === 'undefined') return 0; // SSR\n return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/icons.ts\":\n/*!************************************************!*\\\n !*** ./src/components/Vuetify/mixins/icons.ts ***!\n \\************************************************/\n/*! exports provided: convertToComponentDeclarations, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToComponentDeclarations\", function() { return convertToComponentDeclarations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return icons; });\n// Maps internal Vuetify icon names to actual Material Design icon names.\nvar ICONS_MATERIAL = {\n 'complete': 'check',\n 'cancel': 'cancel',\n 'close': 'close',\n 'delete': 'cancel',\n 'clear': 'clear',\n 'success': 'check_circle',\n 'info': 'info',\n 'warning': 'priority_high',\n 'error': 'warning',\n 'prev': 'chevron_left',\n 'next': 'chevron_right',\n 'checkboxOn': 'check_box',\n 'checkboxOff': 'check_box_outline_blank',\n 'checkboxIndeterminate': 'indeterminate_check_box',\n 'delimiter': 'fiber_manual_record',\n 'sort': 'arrow_upward',\n 'expand': 'keyboard_arrow_down',\n 'menu': 'menu',\n 'subgroup': 'arrow_drop_down',\n 'dropdown': 'arrow_drop_down',\n 'radioOn': 'radio_button_checked',\n 'radioOff': 'radio_button_unchecked',\n 'edit': 'edit',\n 'ratingEmpty': 'star_border',\n 'ratingFull': 'star',\n 'ratingHalf': 'star_half',\n 'loading': 'cached'\n};\n// Maps internal Vuetify icon names to actual icons from materialdesignicons.com\nvar ICONS_MDI = {\n 'complete': 'mdi-check',\n 'cancel': 'mdi-close-circle',\n 'close': 'mdi-close',\n 'delete': 'mdi-close-circle',\n 'clear': 'mdi-close',\n 'success': 'mdi-check-circle',\n 'info': 'mdi-information',\n 'warning': 'mdi-exclamation',\n 'error': 'mdi-alert',\n 'prev': 'mdi-chevron-left',\n 'next': 'mdi-chevron-right',\n 'checkboxOn': 'mdi-checkbox-marked',\n 'checkboxOff': 'mdi-checkbox-blank-outline',\n 'checkboxIndeterminate': 'mdi-minus-box',\n 'delimiter': 'mdi-circle',\n 'sort': 'mdi-arrow-up',\n 'expand': 'mdi-chevron-down',\n 'menu': 'mdi-menu',\n 'subgroup': 'mdi-menu-down',\n 'dropdown': 'mdi-menu-down',\n 'radioOn': 'mdi-radiobox-marked',\n 'radioOff': 'mdi-radiobox-blank',\n 'edit': 'mdi-pencil',\n 'ratingEmpty': 'mdi-star-outline',\n 'ratingFull': 'mdi-star',\n 'ratingHalf': 'mdi-star-half'\n};\n// Maps internal Vuetify icon names to actual Font-Awesome 4 icon names.\nvar ICONS_FONTAWESOME4 = {\n 'complete': 'fa fa-check',\n 'cancel': 'fa fa-times-circle',\n 'close': 'fa fa-times',\n 'delete': 'fa fa-times-circle',\n 'clear': 'fa fa-times-circle',\n 'success': 'fa fa-check-circle',\n 'info': 'fa fa-info-circle',\n 'warning': 'fa fa-exclamation',\n 'error': 'fa fa-exclamation-triangle',\n 'prev': 'fa fa-chevron-left',\n 'next': 'fa fa-chevron-right',\n 'checkboxOn': 'fa fa-check-square',\n 'checkboxOff': 'fa fa-square-o',\n 'checkboxIndeterminate': 'fa fa-minus-square',\n 'delimiter': 'fa fa-circle',\n 'sort': 'fa fa-sort-up',\n 'expand': 'fa fa-chevron-down',\n 'menu': 'fa fa-bars',\n 'subgroup': 'fa fa-caret-down',\n 'dropdown': 'fa fa-caret-down',\n 'radioOn': 'fa fa-dot-circle',\n 'radioOff': 'fa fa-circle-o',\n 'edit': 'fa fa-pencil',\n 'ratingEmpty': 'fa fa-star-o',\n 'ratingFull': 'fa fa-star',\n 'ratingHalf': 'fa fa-star-half-o'\n};\n// Maps internal Vuetify icon names to actual Font-Awesome 5+ icon names.\nvar ICONS_FONTAWESOME = {\n 'complete': 'fas fa-check',\n 'cancel': 'fas fa-times-circle',\n 'close': 'fas fa-times',\n 'delete': 'fas fa-times-circle',\n 'clear': 'fas fa-times-circle',\n 'success': 'fas fa-check-circle',\n 'info': 'fas fa-info-circle',\n 'warning': 'fas fa-exclamation',\n 'error': 'fas fa-exclamation-triangle',\n 'prev': 'fas fa-chevron-left',\n 'next': 'fas fa-chevron-right',\n 'checkboxOn': 'fas fa-check-square',\n 'checkboxOff': 'far fa-square',\n 'checkboxIndeterminate': 'fas fa-minus-square',\n 'delimiter': 'fas fa-circle',\n 'sort': 'fas fa-sort-up',\n 'expand': 'fas fa-chevron-down',\n 'menu': 'fas fa-bars',\n 'subgroup': 'fas fa-caret-down',\n 'dropdown': 'fas fa-caret-down',\n 'radioOn': 'far fa-dot-circle',\n 'radioOff': 'far fa-circle',\n 'edit': 'fas fa-edit',\n 'ratingEmpty': 'far fa-star',\n 'ratingFull': 'fas fa-star',\n 'ratingHalf': 'fas fa-star-half'\n};\nfunction convertToComponentDeclarations(component, iconSet) {\n var result = {};\n for (var key in iconSet) {\n result[key] = {\n component: component,\n props: {\n icon: iconSet[key].split(' fa-')\n }\n };\n }\n return result;\n}\nvar iconSets = {\n md: ICONS_MATERIAL,\n mdi: ICONS_MDI,\n fa: ICONS_FONTAWESOME,\n fa4: ICONS_FONTAWESOME4,\n faSvg: convertToComponentDeclarations('font-awesome-icon', ICONS_FONTAWESOME)\n};\nfunction icons(iconfont, icons) {\n if (iconfont === void 0) {\n iconfont = 'md';\n }\n if (icons === void 0) {\n icons = {};\n }\n return Object.assign({}, iconSets[iconfont] || iconSets.md, icons);\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/lang.ts\":\n/*!***********************************************!*\\\n !*** ./src/components/Vuetify/mixins/lang.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lang; });\n/* harmony import */ var _locale_en__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../locale/en */ \"./src/locale/en.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../util/console */ \"./src/util/console.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n\nvar LANG_PREFIX = '$vuetify.';\nvar fallback = Symbol('Lang fallback');\nfunction getTranslation(locale, key, usingFallback) {\n if (usingFallback === void 0) {\n usingFallback = false;\n }\n var shortKey = key.replace(LANG_PREFIX, '');\n var translation = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getObjectValueByPath\"])(locale, shortKey, fallback);\n if (translation === fallback) {\n if (usingFallback) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleError\"])(\"Translation key \\\"\" + shortKey + \"\\\" not found in fallback\");\n translation = key;\n } else {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_2__[\"consoleWarn\"])(\"Translation key \\\"\" + shortKey + \"\\\" not found, falling back to default\");\n translation = getTranslation(_locale_en__WEBPACK_IMPORTED_MODULE_0__[\"default\"], key, true);\n }\n }\n return translation;\n}\nfunction lang(config) {\n if (config === void 0) {\n config = {};\n }\n return {\n locales: Object.assign({ en: _locale_en__WEBPACK_IMPORTED_MODULE_0__[\"default\"] }, config.locales),\n current: config.current || 'en',\n t: function t(key) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n if (!key.startsWith(LANG_PREFIX)) return key;\n if (config.t) return config.t.apply(config, __spread([key], params));\n var translation = getTranslation(this.locales[this.current], key);\n return translation.replace(/\\{(\\d+)\\}/g, function (match, index) {\n return String(params[+index]);\n });\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/options.ts\":\n/*!**************************************************!*\\\n !*** ./src/components/Vuetify/mixins/options.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return options; });\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar OPTIONS_DEFAULTS = {\n minifyTheme: null,\n themeCache: null,\n customProperties: false,\n cspNonce: null\n};\nfunction options(options) {\n if (options === void 0) {\n options = {};\n }\n return __assign({}, OPTIONS_DEFAULTS, options);\n}\n\n/***/ }),\n\n/***/ \"./src/components/Vuetify/mixins/theme.ts\":\n/*!************************************************!*\\\n !*** ./src/components/Vuetify/mixins/theme.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return theme; });\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable no-multi-spaces */\nvar THEME_DEFAULTS = {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00' // orange.darken1\n};\nfunction theme(theme) {\n if (theme === void 0) {\n theme = {};\n }\n if (theme === false) return false;\n return __assign({}, THEME_DEFAULTS, theme);\n}\n\n/***/ }),\n\n/***/ \"./src/components/index.ts\":\n/*!*********************************!*\\\n !*** ./src/components/index.ts ***!\n \\*********************************/\n/*! exports provided: VApp, VAlert, VAutocomplete, VAvatar, VBadge, VBottomNav, VBottomSheet, VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, VBtn, VBtnToggle, VCalendar, VCalendarDaily, VCalendarWeekly, VCalendarMonthly, VCard, VCardMedia, VCardTitle, VCardActions, VCardText, VCarousel, VCarouselItem, VCheckbox, VChip, VCombobox, VCounter, VDataIterator, VDataTable, VEditDialog, VTableOverflow, VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, VDialog, VDivider, VExpansionPanel, VExpansionPanelContent, VFooter, VForm, VContainer, VContent, VFlex, VLayout, VSpacer, VHover, VIcon, VImg, VInput, VItem, VItemGroup, VJumbotron, VLabel, VList, VListGroup, VListTile, VListTileAction, VListTileAvatar, VListTileActionText, VListTileContent, VListTileTitle, VListTileSubTitle, VMenu, VMessages, VNavigationDrawer, VOverflowBtn, VPagination, VSheet, VParallax, VPicker, VProgressCircular, VProgressLinear, VRadioGroup, VRadio, VRangeSlider, VRating, VResponsive, VSelect, VSlider, VSnackbar, VSparkline, VSpeedDial, VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, VSubheader, VSwitch, VSystemBar, VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, VTextarea, VTextField, VTimeline, VTimelineItem, VTimePicker, VTimePickerClock, VTimePickerTitle, VToolbar, VToolbarSideIcon, VToolbarTitle, VToolbarItems, VTooltip, VTreeview, VTreeviewNode, VWindow, VWindowItem, VBottomSheetTransition, VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VExpandXTransition, VRowExpandTransition */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _VApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VApp */ \"./src/components/VApp/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VApp\", function() { return _VApp__WEBPACK_IMPORTED_MODULE_0__[\"VApp\"]; });\n\n/* harmony import */ var _VAlert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VAlert */ \"./src/components/VAlert/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAlert\", function() { return _VAlert__WEBPACK_IMPORTED_MODULE_1__[\"VAlert\"]; });\n\n/* harmony import */ var _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VAutocomplete */ \"./src/components/VAutocomplete/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAutocomplete\", function() { return _VAutocomplete__WEBPACK_IMPORTED_MODULE_2__[\"VAutocomplete\"]; });\n\n/* harmony import */ var _VAvatar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VAvatar */ \"./src/components/VAvatar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VAvatar\", function() { return _VAvatar__WEBPACK_IMPORTED_MODULE_3__[\"VAvatar\"]; });\n\n/* harmony import */ var _VBadge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./VBadge */ \"./src/components/VBadge/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBadge\", function() { return _VBadge__WEBPACK_IMPORTED_MODULE_4__[\"VBadge\"]; });\n\n/* harmony import */ var _VBottomNav__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VBottomNav */ \"./src/components/VBottomNav/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomNav\", function() { return _VBottomNav__WEBPACK_IMPORTED_MODULE_5__[\"VBottomNav\"]; });\n\n/* harmony import */ var _VBottomSheet__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VBottomSheet */ \"./src/components/VBottomSheet/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheet\", function() { return _VBottomSheet__WEBPACK_IMPORTED_MODULE_6__[\"VBottomSheet\"]; });\n\n/* harmony import */ var _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./VBreadcrumbs */ \"./src/components/VBreadcrumbs/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbs\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_7__[\"VBreadcrumbs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsItem\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_7__[\"VBreadcrumbsItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBreadcrumbsDivider\", function() { return _VBreadcrumbs__WEBPACK_IMPORTED_MODULE_7__[\"VBreadcrumbsDivider\"]; });\n\n/* harmony import */ var _VBtn__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtn\", function() { return _VBtn__WEBPACK_IMPORTED_MODULE_8__[\"VBtn\"]; });\n\n/* harmony import */ var _VBtnToggle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VBtnToggle */ \"./src/components/VBtnToggle/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBtnToggle\", function() { return _VBtnToggle__WEBPACK_IMPORTED_MODULE_9__[\"VBtnToggle\"]; });\n\n/* harmony import */ var _VCalendar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./VCalendar */ \"./src/components/VCalendar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendar\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_10__[\"VCalendar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarDaily\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_10__[\"VCalendarDaily\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarWeekly\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_10__[\"VCalendarWeekly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCalendarMonthly\", function() { return _VCalendar__WEBPACK_IMPORTED_MODULE_10__[\"VCalendarMonthly\"]; });\n\n/* harmony import */ var _VCard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./VCard */ \"./src/components/VCard/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCard\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_11__[\"VCard\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardMedia\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_11__[\"VCardMedia\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardTitle\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_11__[\"VCardTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardActions\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_11__[\"VCardActions\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCardText\", function() { return _VCard__WEBPACK_IMPORTED_MODULE_11__[\"VCardText\"]; });\n\n/* harmony import */ var _VCarousel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./VCarousel */ \"./src/components/VCarousel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarousel\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_12__[\"VCarousel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselItem\", function() { return _VCarousel__WEBPACK_IMPORTED_MODULE_12__[\"VCarouselItem\"]; });\n\n/* harmony import */ var _VCheckbox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./VCheckbox */ \"./src/components/VCheckbox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCheckbox\", function() { return _VCheckbox__WEBPACK_IMPORTED_MODULE_13__[\"VCheckbox\"]; });\n\n/* harmony import */ var _VChip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./VChip */ \"./src/components/VChip/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VChip\", function() { return _VChip__WEBPACK_IMPORTED_MODULE_14__[\"VChip\"]; });\n\n/* harmony import */ var _VCombobox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./VCombobox */ \"./src/components/VCombobox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCombobox\", function() { return _VCombobox__WEBPACK_IMPORTED_MODULE_15__[\"VCombobox\"]; });\n\n/* harmony import */ var _VCounter__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./VCounter */ \"./src/components/VCounter/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCounter\", function() { return _VCounter__WEBPACK_IMPORTED_MODULE_16__[\"VCounter\"]; });\n\n/* harmony import */ var _VDataIterator__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./VDataIterator */ \"./src/components/VDataIterator/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataIterator\", function() { return _VDataIterator__WEBPACK_IMPORTED_MODULE_17__[\"VDataIterator\"]; });\n\n/* harmony import */ var _VDataTable__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./VDataTable */ \"./src/components/VDataTable/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDataTable\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_18__[\"VDataTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VEditDialog\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_18__[\"VEditDialog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTableOverflow\", function() { return _VDataTable__WEBPACK_IMPORTED_MODULE_18__[\"VTableOverflow\"]; });\n\n/* harmony import */ var _VDatePicker__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./VDatePicker */ \"./src/components/VDatePicker/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePicker\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePicker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerTitle\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePickerTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerHeader\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePickerHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerDateTable\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePickerDateTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerMonthTable\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePickerMonthTable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDatePickerYears\", function() { return _VDatePicker__WEBPACK_IMPORTED_MODULE_19__[\"VDatePickerYears\"]; });\n\n/* harmony import */ var _VDialog__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./VDialog */ \"./src/components/VDialog/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialog\", function() { return _VDialog__WEBPACK_IMPORTED_MODULE_20__[\"VDialog\"]; });\n\n/* harmony import */ var _VDivider__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./VDivider */ \"./src/components/VDivider/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDivider\", function() { return _VDivider__WEBPACK_IMPORTED_MODULE_21__[\"VDivider\"]; });\n\n/* harmony import */ var _VExpansionPanel__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./VExpansionPanel */ \"./src/components/VExpansionPanel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanel\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_22__[\"VExpansionPanel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpansionPanelContent\", function() { return _VExpansionPanel__WEBPACK_IMPORTED_MODULE_22__[\"VExpansionPanelContent\"]; });\n\n/* harmony import */ var _VFooter__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./VFooter */ \"./src/components/VFooter/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFooter\", function() { return _VFooter__WEBPACK_IMPORTED_MODULE_23__[\"VFooter\"]; });\n\n/* harmony import */ var _VForm__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./VForm */ \"./src/components/VForm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VForm\", function() { return _VForm__WEBPACK_IMPORTED_MODULE_24__[\"VForm\"]; });\n\n/* harmony import */ var _VGrid__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./VGrid */ \"./src/components/VGrid/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContainer\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_25__[\"VContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VContent\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_25__[\"VContent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFlex\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_25__[\"VFlex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLayout\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_25__[\"VLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpacer\", function() { return _VGrid__WEBPACK_IMPORTED_MODULE_25__[\"VSpacer\"]; });\n\n/* harmony import */ var _VHover__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./VHover */ \"./src/components/VHover/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VHover\", function() { return _VHover__WEBPACK_IMPORTED_MODULE_26__[\"VHover\"]; });\n\n/* harmony import */ var _VIcon__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VIcon\", function() { return _VIcon__WEBPACK_IMPORTED_MODULE_27__[\"VIcon\"]; });\n\n/* harmony import */ var _VImg__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./VImg */ \"./src/components/VImg/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VImg\", function() { return _VImg__WEBPACK_IMPORTED_MODULE_28__[\"VImg\"]; });\n\n/* harmony import */ var _VInput__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./VInput */ \"./src/components/VInput/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VInput\", function() { return _VInput__WEBPACK_IMPORTED_MODULE_29__[\"VInput\"]; });\n\n/* harmony import */ var _VItemGroup__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./VItemGroup */ \"./src/components/VItemGroup/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItem\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_30__[\"VItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VItemGroup\", function() { return _VItemGroup__WEBPACK_IMPORTED_MODULE_30__[\"VItemGroup\"]; });\n\n/* harmony import */ var _VJumbotron__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./VJumbotron */ \"./src/components/VJumbotron/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VJumbotron\", function() { return _VJumbotron__WEBPACK_IMPORTED_MODULE_31__[\"VJumbotron\"]; });\n\n/* harmony import */ var _VLabel__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./VLabel */ \"./src/components/VLabel/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VLabel\", function() { return _VLabel__WEBPACK_IMPORTED_MODULE_32__[\"VLabel\"]; });\n\n/* harmony import */ var _VList__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./VList */ \"./src/components/VList/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VList\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListGroup\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTile\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTile\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileAction\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileAction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileAvatar\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileAvatar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileActionText\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileActionText\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileContent\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileContent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileTitle\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VListTileSubTitle\", function() { return _VList__WEBPACK_IMPORTED_MODULE_33__[\"VListTileSubTitle\"]; });\n\n/* harmony import */ var _VMenu__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./VMenu */ \"./src/components/VMenu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenu\", function() { return _VMenu__WEBPACK_IMPORTED_MODULE_34__[\"VMenu\"]; });\n\n/* harmony import */ var _VMessages__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./VMessages */ \"./src/components/VMessages/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMessages\", function() { return _VMessages__WEBPACK_IMPORTED_MODULE_35__[\"VMessages\"]; });\n\n/* harmony import */ var _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./VNavigationDrawer */ \"./src/components/VNavigationDrawer/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VNavigationDrawer\", function() { return _VNavigationDrawer__WEBPACK_IMPORTED_MODULE_36__[\"VNavigationDrawer\"]; });\n\n/* harmony import */ var _VOverflowBtn__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./VOverflowBtn */ \"./src/components/VOverflowBtn/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VOverflowBtn\", function() { return _VOverflowBtn__WEBPACK_IMPORTED_MODULE_37__[\"VOverflowBtn\"]; });\n\n/* harmony import */ var _VPagination__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./VPagination */ \"./src/components/VPagination/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPagination\", function() { return _VPagination__WEBPACK_IMPORTED_MODULE_38__[\"VPagination\"]; });\n\n/* harmony import */ var _VSheet__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./VSheet */ \"./src/components/VSheet/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSheet\", function() { return _VSheet__WEBPACK_IMPORTED_MODULE_39__[\"VSheet\"]; });\n\n/* harmony import */ var _VParallax__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./VParallax */ \"./src/components/VParallax/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VParallax\", function() { return _VParallax__WEBPACK_IMPORTED_MODULE_40__[\"VParallax\"]; });\n\n/* harmony import */ var _VPicker__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./VPicker */ \"./src/components/VPicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VPicker\", function() { return _VPicker__WEBPACK_IMPORTED_MODULE_41__[\"VPicker\"]; });\n\n/* harmony import */ var _VProgressCircular__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./VProgressCircular */ \"./src/components/VProgressCircular/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressCircular\", function() { return _VProgressCircular__WEBPACK_IMPORTED_MODULE_42__[\"VProgressCircular\"]; });\n\n/* harmony import */ var _VProgressLinear__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./VProgressLinear */ \"./src/components/VProgressLinear/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VProgressLinear\", function() { return _VProgressLinear__WEBPACK_IMPORTED_MODULE_43__[\"VProgressLinear\"]; });\n\n/* harmony import */ var _VRadioGroup__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./VRadioGroup */ \"./src/components/VRadioGroup/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadioGroup\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_44__[\"VRadioGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRadio\", function() { return _VRadioGroup__WEBPACK_IMPORTED_MODULE_44__[\"VRadio\"]; });\n\n/* harmony import */ var _VRangeSlider__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./VRangeSlider */ \"./src/components/VRangeSlider/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRangeSlider\", function() { return _VRangeSlider__WEBPACK_IMPORTED_MODULE_45__[\"VRangeSlider\"]; });\n\n/* harmony import */ var _VRating__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./VRating */ \"./src/components/VRating/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRating\", function() { return _VRating__WEBPACK_IMPORTED_MODULE_46__[\"VRating\"]; });\n\n/* harmony import */ var _VResponsive__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./VResponsive */ \"./src/components/VResponsive/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VResponsive\", function() { return _VResponsive__WEBPACK_IMPORTED_MODULE_47__[\"VResponsive\"]; });\n\n/* harmony import */ var _VSelect__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./VSelect */ \"./src/components/VSelect/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSelect\", function() { return _VSelect__WEBPACK_IMPORTED_MODULE_48__[\"VSelect\"]; });\n\n/* harmony import */ var _VSlider__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./VSlider */ \"./src/components/VSlider/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlider\", function() { return _VSlider__WEBPACK_IMPORTED_MODULE_49__[\"VSlider\"]; });\n\n/* harmony import */ var _VSnackbar__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./VSnackbar */ \"./src/components/VSnackbar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSnackbar\", function() { return _VSnackbar__WEBPACK_IMPORTED_MODULE_50__[\"VSnackbar\"]; });\n\n/* harmony import */ var _VSparkline__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./VSparkline */ \"./src/components/VSparkline/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSparkline\", function() { return _VSparkline__WEBPACK_IMPORTED_MODULE_51__[\"VSparkline\"]; });\n\n/* harmony import */ var _VSpeedDial__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./VSpeedDial */ \"./src/components/VSpeedDial/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSpeedDial\", function() { return _VSpeedDial__WEBPACK_IMPORTED_MODULE_52__[\"VSpeedDial\"]; });\n\n/* harmony import */ var _VStepper__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./VStepper */ \"./src/components/VStepper/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepper\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_53__[\"VStepper\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperContent\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_53__[\"VStepperContent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperStep\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_53__[\"VStepperStep\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperHeader\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_53__[\"VStepperHeader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VStepperItems\", function() { return _VStepper__WEBPACK_IMPORTED_MODULE_53__[\"VStepperItems\"]; });\n\n/* harmony import */ var _VSubheader__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./VSubheader */ \"./src/components/VSubheader/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSubheader\", function() { return _VSubheader__WEBPACK_IMPORTED_MODULE_54__[\"VSubheader\"]; });\n\n/* harmony import */ var _VSwitch__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./VSwitch */ \"./src/components/VSwitch/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSwitch\", function() { return _VSwitch__WEBPACK_IMPORTED_MODULE_55__[\"VSwitch\"]; });\n\n/* harmony import */ var _VSystemBar__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./VSystemBar */ \"./src/components/VSystemBar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSystemBar\", function() { return _VSystemBar__WEBPACK_IMPORTED_MODULE_56__[\"VSystemBar\"]; });\n\n/* harmony import */ var _VTabs__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./VTabs */ \"./src/components/VTabs/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabs\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_57__[\"VTabs\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTab\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_57__[\"VTab\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabItem\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_57__[\"VTabItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsItems\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_57__[\"VTabsItems\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabsSlider\", function() { return _VTabs__WEBPACK_IMPORTED_MODULE_57__[\"VTabsSlider\"]; });\n\n/* harmony import */ var _VTextarea__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./VTextarea */ \"./src/components/VTextarea/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextarea\", function() { return _VTextarea__WEBPACK_IMPORTED_MODULE_58__[\"VTextarea\"]; });\n\n/* harmony import */ var _VTextField__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./VTextField */ \"./src/components/VTextField/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTextField\", function() { return _VTextField__WEBPACK_IMPORTED_MODULE_59__[\"VTextField\"]; });\n\n/* harmony import */ var _VTimeline__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./VTimeline */ \"./src/components/VTimeline/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimeline\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_60__[\"VTimeline\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimelineItem\", function() { return _VTimeline__WEBPACK_IMPORTED_MODULE_60__[\"VTimelineItem\"]; });\n\n/* harmony import */ var _VTimePicker__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./VTimePicker */ \"./src/components/VTimePicker/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePicker\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_61__[\"VTimePicker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerClock\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_61__[\"VTimePickerClock\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTimePickerTitle\", function() { return _VTimePicker__WEBPACK_IMPORTED_MODULE_61__[\"VTimePickerTitle\"]; });\n\n/* harmony import */ var _VToolbar__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./VToolbar */ \"./src/components/VToolbar/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbar\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_62__[\"VToolbar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarSideIcon\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_62__[\"VToolbarSideIcon\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarTitle\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_62__[\"VToolbarTitle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VToolbarItems\", function() { return _VToolbar__WEBPACK_IMPORTED_MODULE_62__[\"VToolbarItems\"]; });\n\n/* harmony import */ var _VTooltip__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./VTooltip */ \"./src/components/VTooltip/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTooltip\", function() { return _VTooltip__WEBPACK_IMPORTED_MODULE_63__[\"VTooltip\"]; });\n\n/* harmony import */ var _VTreeview__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./VTreeview */ \"./src/components/VTreeview/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeview\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_64__[\"VTreeview\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTreeviewNode\", function() { return _VTreeview__WEBPACK_IMPORTED_MODULE_64__[\"VTreeviewNode\"]; });\n\n/* harmony import */ var _VWindow__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./VWindow */ \"./src/components/VWindow/index.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindow\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_65__[\"VWindow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VWindowItem\", function() { return _VWindow__WEBPACK_IMPORTED_MODULE_65__[\"VWindowItem\"]; });\n\n/* harmony import */ var _transitions__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./transitions */ \"./src/components/transitions/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheetTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VBottomSheetTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VCarouselTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VCarouselReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VCarouselReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VTabTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VTabReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VTabReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VMenuTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VMenuTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFabTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VFabTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialogTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VDialogTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VDialogBottomTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VDialogBottomTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VFadeTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VFadeTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScaleTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VScaleTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VScrollXTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollXReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VScrollXReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollYTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VScrollYTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VScrollYReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VScrollYReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VSlideXTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideXReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VSlideXReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideYTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VSlideYTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VSlideYReverseTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VSlideYReverseTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpandTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VExpandTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VExpandXTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VExpandXTransition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VRowExpandTransition\", function() { return _transitions__WEBPACK_IMPORTED_MODULE_66__[\"VRowExpandTransition\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/components/transitions/expand-transition.js\":\n/*!*********************************************************!*\\\n !*** ./src/components/transitions/expand-transition.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (expandedParentClass, x) {\n if (expandedParentClass === void 0) {\n expandedParentClass = '';\n }\n if (x === void 0) {\n x = false;\n }\n var sizeProperty = x ? 'width' : 'height';\n return {\n beforeEnter: function beforeEnter(el) {\n var _a;\n el._parent = el.parentNode;\n el._initialStyle = (_a = {\n transition: el.style.transition,\n visibility: el.style.visibility,\n overflow: el.style.overflow\n }, _a[sizeProperty] = el.style[sizeProperty], _a);\n },\n enter: function enter(el) {\n var initialStyle = el._initialStyle;\n el.style.setProperty('transition', 'none', 'important');\n el.style.visibility = 'hidden';\n var size = el['offset' + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"])(sizeProperty)] + \"px\";\n el.style.visibility = initialStyle.visibility;\n el.style.overflow = 'hidden';\n el.style[sizeProperty] = 0;\n void el.offsetHeight; // force reflow\n el.style.transition = initialStyle.transition;\n expandedParentClass && el._parent && el._parent.classList.add(expandedParentClass);\n requestAnimationFrame(function () {\n el.style[sizeProperty] = size;\n });\n },\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n leave: function leave(el) {\n var _a;\n el._initialStyle = (_a = {\n overflow: el.style.overflow\n }, _a[sizeProperty] = el.style[sizeProperty], _a);\n el.style.overflow = 'hidden';\n el.style[sizeProperty] = el['offset' + Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"])(sizeProperty)] + \"px\";\n void el.offsetHeight; // force reflow\n requestAnimationFrame(function () {\n return el.style[sizeProperty] = 0;\n });\n },\n afterLeave: afterLeave,\n leaveCancelled: afterLeave\n };\n function afterLeave(el) {\n expandedParentClass && el._parent && el._parent.classList.remove(expandedParentClass);\n resetStyles(el);\n }\n function resetStyles(el) {\n el.style.overflow = el._initialStyle.overflow;\n el.style[sizeProperty] = el._initialStyle[sizeProperty];\n delete el._initialStyle;\n }\n});\n\n/***/ }),\n\n/***/ \"./src/components/transitions/index.js\":\n/*!*********************************************!*\\\n !*** ./src/components/transitions/index.js ***!\n \\*********************************************/\n/*! exports provided: VBottomSheetTransition, VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VExpandXTransition, VRowExpandTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VBottomSheetTransition\", function() { return VBottomSheetTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCarouselTransition\", function() { return VCarouselTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VCarouselReverseTransition\", function() { return VCarouselReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTabTransition\", function() { return VTabTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTabReverseTransition\", function() { return VTabReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VMenuTransition\", function() { return VMenuTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VFabTransition\", function() { return VFabTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VDialogTransition\", function() { return VDialogTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VDialogBottomTransition\", function() { return VDialogBottomTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VFadeTransition\", function() { return VFadeTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScaleTransition\", function() { return VScaleTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollXTransition\", function() { return VScrollXTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollXReverseTransition\", function() { return VScrollXReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollYTransition\", function() { return VScrollYTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VScrollYReverseTransition\", function() { return VScrollYReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideXTransition\", function() { return VSlideXTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideXReverseTransition\", function() { return VSlideXReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideYTransition\", function() { return VSlideYTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSlideYReverseTransition\", function() { return VSlideYReverseTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VExpandTransition\", function() { return VExpandTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VExpandXTransition\", function() { return VExpandXTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VRowExpandTransition\", function() { return VRowExpandTransition; });\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _expand_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./expand-transition */ \"./src/components/transitions/expand-transition.js\");\n\n\n// Component specific transitions\nvar VBottomSheetTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('bottom-sheet-transition');\nvar VCarouselTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('carousel-transition');\nvar VCarouselReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('carousel-reverse-transition');\nvar VTabTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('tab-transition');\nvar VTabReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('tab-reverse-transition');\nvar VMenuTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('menu-transition');\nvar VFabTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('fab-transition', 'center center', 'out-in');\n// Generic transitions\nvar VDialogTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('dialog-transition');\nvar VDialogBottomTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('dialog-bottom-transition');\nvar VFadeTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('fade-transition');\nvar VScaleTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scale-transition');\nvar VScrollXTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-x-transition');\nvar VScrollXReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-x-reverse-transition');\nvar VScrollYTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-y-transition');\nvar VScrollYReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('scroll-y-reverse-transition');\nvar VSlideXTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-x-transition');\nvar VSlideXReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-x-reverse-transition');\nvar VSlideYTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-y-transition');\nvar VSlideYReverseTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createSimpleTransition\"])('slide-y-reverse-transition');\n// JavaScript transitions\nvar VExpandTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createJavaScriptTransition\"])('expand-transition', Object(_expand_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"])());\nvar VExpandXTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createJavaScriptTransition\"])('expand-x-transition', Object(_expand_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('', true));\nvar VRowExpandTransition = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"createJavaScriptTransition\"])('row-expand-transition', Object(_expand_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('datatable__expand-col--expanded'));\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n $_vuetify_subcomponents: {\n VBottomSheetTransition: VBottomSheetTransition,\n VCarouselTransition: VCarouselTransition,\n VCarouselReverseTransition: VCarouselReverseTransition,\n VDialogTransition: VDialogTransition,\n VDialogBottomTransition: VDialogBottomTransition,\n VFabTransition: VFabTransition,\n VFadeTransition: VFadeTransition,\n VMenuTransition: VMenuTransition,\n VScaleTransition: VScaleTransition,\n VScrollXTransition: VScrollXTransition,\n VScrollXReverseTransition: VScrollXReverseTransition,\n VScrollYTransition: VScrollYTransition,\n VScrollYReverseTransition: VScrollYReverseTransition,\n VSlideXTransition: VSlideXTransition,\n VSlideXReverseTransition: VSlideXReverseTransition,\n VSlideYTransition: VSlideYTransition,\n VSlideYReverseTransition: VSlideYReverseTransition,\n VTabReverseTransition: VTabReverseTransition,\n VTabTransition: VTabTransition,\n VExpandTransition: VExpandTransition,\n VExpandXTransition: VExpandXTransition,\n VRowExpandTransition: VRowExpandTransition\n }\n});\n\n/***/ }),\n\n/***/ \"./src/directives/click-outside.ts\":\n/*!*****************************************!*\\\n !*** ./src/directives/click-outside.ts ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction closeConditional() {\n return false;\n}\nfunction directive(e, el, binding) {\n // Args may not always be supplied\n binding.args = binding.args || {};\n // If no closeConditional was supplied assign a default\n var isActive = binding.args.closeConditional || closeConditional;\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || isActive(e) === false) return;\n // If click was triggered programmaticaly (domEl.click()) then\n // it shouldn't be treated as click-outside\n // Chrome/Firefox support isTrusted property\n // IE/Edge support pointerType property (empty if not triggered\n // by pointing device)\n if ('isTrusted' in e && !e.isTrusted || 'pointerType' in e && !e.pointerType) return;\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n var elements = (binding.args.include || function () {\n return [];\n })();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n !elements.some(function (el) {\n return el.contains(e.target);\n }) && setTimeout(function () {\n isActive(e) && binding.value && binding.value(e);\n }, 0);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted: function inserted(el, binding) {\n var onClick = function onClick(e) {\n return directive(e, el, binding);\n };\n // iOS does not recognize click events on document\n // or body, this is the entire purpose of the v-app\n // component and [data-app], stop removing this\n var app = document.querySelector('[data-app]') || document.body; // This is only for unit tests\n app.addEventListener('click', onClick, true);\n el._clickOutside = onClick;\n },\n unbind: function unbind(el) {\n if (!el._clickOutside) return;\n var app = document.querySelector('[data-app]') || document.body; // This is only for unit tests\n app && app.removeEventListener('click', el._clickOutside, true);\n delete el._clickOutside;\n }\n});\n\n/***/ }),\n\n/***/ \"./src/directives/index.ts\":\n/*!*********************************!*\\\n !*** ./src/directives/index.ts ***!\n \\*********************************/\n/*! exports provided: ClickOutside, Ripple, Resize, Scroll, Touch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _click_outside__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./click-outside */ \"./src/directives/click-outside.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClickOutside\", function() { return _click_outside__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _resize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize */ \"./src/directives/resize.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Resize\", function() { return _resize__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _ripple__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ripple */ \"./src/directives/ripple.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ripple\", function() { return _ripple__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scroll */ \"./src/directives/scroll.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scroll\", function() { return _scroll__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _touch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./touch */ \"./src/directives/touch.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Touch\", function() { return _touch__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ClickOutside: _click_outside__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n Ripple: _ripple__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Resize: _resize__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Scroll: _scroll__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n Touch: _touch__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./src/directives/resize.ts\":\n/*!**********************************!*\\\n !*** ./src/directives/resize.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction inserted(el, binding) {\n var callback = binding.value;\n var options = binding.options || { passive: true };\n window.addEventListener('resize', callback, options);\n el._onResize = {\n callback: callback,\n options: options\n };\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback();\n }\n}\nfunction unbind(el) {\n if (!el._onResize) return;\n var _a = el._onResize,\n callback = _a.callback,\n options = _a.options;\n window.removeEventListener('resize', callback, options);\n delete el._onResize;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inserted: inserted,\n unbind: unbind\n});\n\n/***/ }),\n\n/***/ \"./src/directives/ripple.ts\":\n/*!**********************************!*\\\n !*** ./src/directives/ripple.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/console */ \"./src/util/console.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\nfunction transform(el, value) {\n el.style['transform'] = value;\n el.style['webkitTransform'] = value;\n}\nfunction opacity(el, value) {\n el.style['opacity'] = value.toString();\n}\nfunction isTouchEvent(e) {\n return e.constructor.name === 'TouchEvent';\n}\nvar calculate = function calculate(e, el, value) {\n if (value === void 0) {\n value = {};\n }\n var offset = el.getBoundingClientRect();\n var target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;\n var localX = target.clientX - offset.left;\n var localY = target.clientY - offset.top;\n var radius = 0;\n var scale = 0.3;\n if (el._ripple && el._ripple.circle) {\n scale = 0.15;\n radius = el.clientWidth / 2;\n radius = value.center ? radius : radius + Math.sqrt(Math.pow(localX - radius, 2) + Math.pow(localY - radius, 2)) / 4;\n } else {\n radius = Math.sqrt(Math.pow(el.clientWidth, 2) + Math.pow(el.clientHeight, 2)) / 2;\n }\n var centerX = (el.clientWidth - radius * 2) / 2 + \"px\";\n var centerY = (el.clientHeight - radius * 2) / 2 + \"px\";\n var x = value.center ? centerX : localX - radius + \"px\";\n var y = value.center ? centerY : localY - radius + \"px\";\n return { radius: radius, scale: scale, x: x, y: y, centerX: centerX, centerY: centerY };\n};\nvar ripple = {\n /* eslint-disable max-statements */\n show: function show(e, el, value) {\n if (value === void 0) {\n value = {};\n }\n if (!el._ripple || !el._ripple.enabled) {\n return;\n }\n var container = document.createElement('span');\n var animation = document.createElement('span');\n container.appendChild(animation);\n container.className = 'v-ripple__container';\n if (value.class) {\n container.className += \" \" + value.class;\n }\n var _a = calculate(e, el, value),\n radius = _a.radius,\n scale = _a.scale,\n x = _a.x,\n y = _a.y,\n centerX = _a.centerX,\n centerY = _a.centerY;\n var size = radius * 2 + \"px\";\n animation.className = 'v-ripple__animation';\n animation.style.width = size;\n animation.style.height = size;\n el.appendChild(container);\n var computed = window.getComputedStyle(el);\n if (computed && computed.position === 'static') {\n el.style.position = 'relative';\n el.dataset.previousPosition = 'static';\n }\n animation.classList.add('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--visible');\n transform(animation, \"translate(\" + x + \", \" + y + \") scale3d(\" + scale + \",\" + scale + \",\" + scale + \")\");\n opacity(animation, 0);\n animation.dataset.activated = String(performance.now());\n setTimeout(function () {\n animation.classList.remove('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--in');\n transform(animation, \"translate(\" + centerX + \", \" + centerY + \") scale3d(1,1,1)\");\n opacity(animation, 0.25);\n }, 0);\n },\n hide: function hide(el) {\n if (!el || !el._ripple || !el._ripple.enabled) return;\n var ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 0) return;\n var animation = ripples[ripples.length - 1];\n if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';\n var diff = performance.now() - Number(animation.dataset.activated);\n var delay = Math.max(250 - diff, 0);\n setTimeout(function () {\n animation.classList.remove('v-ripple__animation--in');\n animation.classList.add('v-ripple__animation--out');\n opacity(animation, 0);\n setTimeout(function () {\n var ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition;\n delete el.dataset.previousPosition;\n }\n animation.parentNode && el.removeChild(animation.parentNode);\n }, 300);\n }, delay);\n }\n};\nfunction isRippleEnabled(value) {\n return typeof value === 'undefined' || !!value;\n}\nfunction rippleShow(e) {\n var value = {};\n var element = e.currentTarget;\n if (!element || !element._ripple || element._ripple.touched) return;\n if (isTouchEvent(e)) {\n element._ripple.touched = true;\n }\n value.center = element._ripple.centered;\n if (element._ripple.class) {\n value.class = element._ripple.class;\n }\n ripple.show(e, element, value);\n}\nfunction rippleHide(e) {\n var element = e.currentTarget;\n if (!element) return;\n window.setTimeout(function () {\n if (element._ripple) {\n element._ripple.touched = false;\n }\n });\n ripple.hide(element);\n}\nfunction updateRipple(el, binding, wasEnabled) {\n var enabled = isRippleEnabled(binding.value);\n if (!enabled) {\n ripple.hide(el);\n }\n el._ripple = el._ripple || {};\n el._ripple.enabled = enabled;\n var value = binding.value || {};\n if (value.center) {\n el._ripple.centered = true;\n }\n if (value.class) {\n el._ripple.class = binding.value.class;\n }\n if (value.circle) {\n el._ripple.circle = value.circle;\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true });\n el.addEventListener('touchend', rippleHide, { passive: true });\n el.addEventListener('touchcancel', rippleHide);\n el.addEventListener('mousedown', rippleShow);\n el.addEventListener('mouseup', rippleHide);\n el.addEventListener('mouseleave', rippleHide);\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true });\n } else if (!enabled && wasEnabled) {\n removeListeners(el);\n }\n}\nfunction removeListeners(el) {\n el.removeEventListener('mousedown', rippleShow);\n el.removeEventListener('touchstart', rippleHide);\n el.removeEventListener('touchend', rippleHide);\n el.removeEventListener('touchcancel', rippleHide);\n el.removeEventListener('mouseup', rippleHide);\n el.removeEventListener('mouseleave', rippleHide);\n el.removeEventListener('dragstart', rippleHide);\n}\nfunction directive(el, binding, node) {\n updateRipple(el, binding, false);\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(function () {\n var computed = window.getComputedStyle(el);\n if (computed && computed.display === 'inline') {\n var context = node.fnOptions ? [node.fnOptions, node.context] : [node.componentInstance];\n _util_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"].apply(void 0, __spread(['v-ripple can only be used on block-level elements'], context));\n }\n });\n}\nfunction unbind(el) {\n delete el._ripple;\n removeListeners(el);\n}\nfunction update(el, binding) {\n if (binding.value === binding.oldValue) {\n return;\n }\n var wasEnabled = isRippleEnabled(binding.oldValue);\n updateRipple(el, binding, wasEnabled);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n bind: directive,\n unbind: unbind,\n update: update\n});\n\n/***/ }),\n\n/***/ \"./src/directives/scroll.ts\":\n/*!**********************************!*\\\n !*** ./src/directives/scroll.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction inserted(el, binding) {\n var callback = binding.value;\n var options = binding.options || { passive: true };\n var target = binding.arg ? document.querySelector(binding.arg) : window;\n if (!target) return;\n target.addEventListener('scroll', callback, options);\n el._onScroll = {\n callback: callback,\n options: options,\n target: target\n };\n}\nfunction unbind(el) {\n if (!el._onScroll) return;\n var _a = el._onScroll,\n callback = _a.callback,\n options = _a.options,\n target = _a.target;\n target.removeEventListener('scroll', callback, options);\n delete el._onScroll;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inserted: inserted,\n unbind: unbind\n});\n\n/***/ }),\n\n/***/ \"./src/directives/touch.ts\":\n/*!*********************************!*\\\n !*** ./src/directives/touch.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n\nvar handleGesture = function handleGesture(wrapper) {\n var touchstartX = wrapper.touchstartX,\n touchendX = wrapper.touchendX,\n touchstartY = wrapper.touchstartY,\n touchendY = wrapper.touchendY;\n var dirRatio = 0.5;\n var minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction _touchstart(event, wrapper) {\n var touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start && wrapper.start(Object.assign(event, wrapper));\n}\nfunction _touchend(event, wrapper) {\n var touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end && wrapper.end(Object.assign(event, wrapper));\n handleGesture(wrapper);\n}\nfunction _touchmove(event, wrapper) {\n var touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move && wrapper.move(Object.assign(event, wrapper));\n}\nfunction createHandlers(value) {\n var wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: function touchstart(e) {\n return _touchstart(e, wrapper);\n },\n touchend: function touchend(e) {\n return _touchend(e, wrapper);\n },\n touchmove: function touchmove(e) {\n return _touchmove(e, wrapper);\n }\n };\n}\nfunction inserted(el, binding, vnode) {\n var value = binding.value;\n var target = value.parent ? el.parentElement : el;\n var options = value.options || { passive: true };\n // Needed to pass unit tests\n if (!target) return;\n var handlers = createHandlers(binding.value);\n target._touchHandlers = Object(target._touchHandlers);\n target._touchHandlers[vnode.context._uid] = handlers;\n Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(handlers).forEach(function (eventName) {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unbind(el, binding, vnode) {\n var target = binding.value.parent ? el.parentElement : el;\n if (!target || !target._touchHandlers) return;\n var handlers = target._touchHandlers[vnode.context._uid];\n Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(handlers).forEach(function (eventName) {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[vnode.context._uid];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inserted: inserted,\n unbind: unbind\n});\n\n/***/ }),\n\n/***/ \"./src/index.ts\":\n/*!**********************!*\\\n !*** ./src/index.ts ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_app_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stylus/app.styl */ \"./src/stylus/app.styl\");\n/* harmony import */ var _stylus_app_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_app_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_Vuetify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Vuetify */ \"./src/components/Vuetify/index.ts\");\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components */ \"./src/components/index.ts\");\n/* harmony import */ var _directives__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./directives */ \"./src/directives/index.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\nvar Vuetify = {\n install: function install(Vue, args) {\n Vue.use(_components_Vuetify__WEBPACK_IMPORTED_MODULE_1__[\"default\"], __assign({ components: _components__WEBPACK_IMPORTED_MODULE_2__,\n directives: _directives__WEBPACK_IMPORTED_MODULE_3__[\"default\"] }, args));\n },\n version: '1.5.24'\n};\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(Vuetify);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vuetify);\n\n/***/ }),\n\n/***/ \"./src/locale/en.ts\":\n/*!**************************!*\\\n !*** ./src/locale/en.ts ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n dataIterator: {\n rowsPerPageText: 'Items per page:',\n rowsPerPageAll: 'All',\n pageText: '{0}-{1} of {2}',\n noResultsText: 'No matching records found',\n nextPage: 'Next page',\n prevPage: 'Previous page'\n },\n dataTable: {\n rowsPerPageText: 'Rows per page:'\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual'\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/applicationable.ts\":\n/*!***************************************!*\\\n !*** ./src/mixins/applicationable.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return applicationable; });\n/* harmony import */ var _positionable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/mixins */ \"./src/util/mixins.ts\");\n\n// Util\n\nfunction applicationable(value, events) {\n if (events === void 0) {\n events = [];\n }\n /* @vue/component */\n return Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Object(_positionable__WEBPACK_IMPORTED_MODULE_0__[\"factory\"])(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n props: {\n app: Boolean\n },\n computed: {\n applicationProperty: function applicationProperty() {\n return value;\n }\n },\n watch: {\n // If previous value was app\n // reset the provided prop\n app: function app(x, prev) {\n prev ? this.removeApplication(true) : this.callUpdate();\n },\n applicationProperty: function applicationProperty(newVal, oldVal) {\n this.$vuetify.application.unbind(this._uid, oldVal);\n }\n },\n activated: function activated() {\n this.callUpdate();\n },\n created: function created() {\n for (var i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate);\n }\n this.callUpdate();\n },\n mounted: function mounted() {\n this.callUpdate();\n },\n deactivated: function deactivated() {\n this.removeApplication();\n },\n destroyed: function destroyed() {\n this.removeApplication();\n },\n methods: {\n callUpdate: function callUpdate() {\n if (!this.app) return;\n this.$vuetify.application.bind(this._uid, this.applicationProperty, this.updateApplication());\n },\n removeApplication: function removeApplication(force) {\n if (force === void 0) {\n force = false;\n }\n if (!force && !this.app) return;\n this.$vuetify.application.unbind(this._uid, this.applicationProperty);\n },\n updateApplication: function updateApplication() {\n return 0;\n }\n }\n });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/bootable.ts\":\n/*!********************************!*\\\n !*** ./src/mixins/bootable.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n name: 'bootable',\n props: {\n lazy: Boolean\n },\n data: function data() {\n return {\n isBooted: false\n };\n },\n computed: {\n hasContent: function hasContent() {\n return this.isBooted || !this.lazy || this.isActive;\n }\n },\n watch: {\n isActive: function isActive() {\n this.isBooted = true;\n }\n },\n methods: {\n showLazyContent: function showLazyContent(content) {\n return this.hasContent ? content : undefined;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/button-group.ts\":\n/*!************************************!*\\\n !*** ./src/mixins/button-group.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/VItemGroup/VItemGroup */ \"./src/components/VItemGroup/VItemGroup.ts\");\n// Extensions\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseItemGroup\"].extend({\n name: 'button-group',\n provide: function provide() {\n return {\n btnToggle: this\n };\n },\n props: {\n activeClass: {\n type: String,\n default: 'v-btn--active'\n }\n },\n computed: {\n classes: function classes() {\n return _components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__[\"BaseItemGroup\"].options.computed.classes.call(this);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/colorable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/colorable.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n\nfunction isCssColor(color) {\n return !!color && !!color.match(/^(#|(rgb|hsl)a?\\()/);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'colorable',\n props: {\n color: String\n },\n methods: {\n setBackgroundColor: function setBackgroundColor(color, data) {\n if (data === void 0) {\n data = {};\n }\n var _a;\n if (isCssColor(color)) {\n data.style = __assign({}, data.style, { 'background-color': \"\" + color, 'border-color': \"\" + color });\n } else if (color) {\n data.class = __assign({}, data.class, (_a = {}, _a[color] = true, _a));\n }\n return data;\n },\n setTextColor: function setTextColor(color, data) {\n if (data === void 0) {\n data = {};\n }\n var _a;\n if (isCssColor(color)) {\n data.style = __assign({}, data.style, { 'color': \"\" + color, 'caret-color': \"\" + color });\n } else if (color) {\n var _b = __read(color.toString().trim().split(' ', 2), 2),\n colorName = _b[0],\n colorModifier = _b[1];\n data.class = __assign({}, data.class, (_a = {}, _a[colorName + '--text'] = true, _a));\n if (colorModifier) {\n data.class['text--' + colorModifier] = true;\n }\n }\n return data;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/comparable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/comparable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"deepEqual\"]\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/data-iterable.js\":\n/*!*************************************!*\\\n !*** ./src/mixins/data-iterable.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VBtn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/VBtn */ \"./src/components/VBtn/index.ts\");\n/* harmony import */ var _components_VIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/VIcon */ \"./src/components/VIcon/index.ts\");\n/* harmony import */ var _components_VSelect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/VSelect */ \"./src/components/VSelect/index.js\");\n/* harmony import */ var _filterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filterable */ \"./src/mixins/filterable.ts\");\n/* harmony import */ var _themeable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _loadable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./loadable */ \"./src/mixins/loadable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/console */ \"./src/util/console.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n\n\n\n\n\n\n/**\n * DataIterable\n *\n * @mixin\n *\n * Base behavior for data table and data iterator\n * providing selection, pagination, sorting and filtering.\n *\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'data-iterable',\n mixins: [_filterable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _loadable__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _themeable__WEBPACK_IMPORTED_MODULE_4__[\"default\"]],\n props: {\n expand: Boolean,\n hideActions: Boolean,\n disableInitialSort: Boolean,\n mustSort: Boolean,\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText'\n },\n nextIcon: {\n type: String,\n default: '$vuetify.icons.next'\n },\n prevIcon: {\n type: String,\n default: '$vuetify.icons.prev'\n },\n rowsPerPageItems: {\n type: Array,\n default: function _default() {\n return [5, 10, 25, {\n text: '$vuetify.dataIterator.rowsPerPageAll',\n value: -1\n }];\n }\n },\n rowsPerPageText: {\n type: String,\n default: '$vuetify.dataIterator.rowsPerPageText'\n },\n selectAll: [Boolean, String],\n search: {\n required: false\n },\n filter: {\n type: Function,\n default: function _default(val, search) {\n return val != null && typeof val !== 'boolean' && val.toString().toLowerCase().indexOf(search) !== -1;\n }\n },\n customFilter: {\n type: Function,\n default: function _default(items, search, filter) {\n search = search.toString().toLowerCase();\n if (search.trim() === '') return items;\n return items.filter(function (i) {\n return Object.keys(i).some(function (j) {\n return filter(i[j], search);\n });\n });\n }\n },\n customSort: {\n type: Function,\n default: function _default(items, index, isDescending) {\n if (index === null) return items;\n return items.sort(function (a, b) {\n var _a, _b;\n var sortA = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(a, index);\n var sortB = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(b, index);\n if (isDescending) {\n _a = __read([sortB, sortA], 2), sortA = _a[0], sortB = _a[1];\n }\n // Check if both are numbers\n if (!isNaN(sortA) && !isNaN(sortB)) {\n return sortA - sortB;\n }\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n return 0;\n }\n _b = __read([sortA, sortB].map(function (s) {\n return (s || '').toString().toLocaleLowerCase();\n }), 2), sortA = _b[0], sortB = _b[1];\n if (sortA > sortB) return 1;\n if (sortA < sortB) return -1;\n return 0;\n });\n }\n },\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n items: {\n type: Array,\n required: true,\n default: function _default() {\n return [];\n }\n },\n totalItems: {\n type: Number,\n default: null\n },\n itemKey: {\n type: String,\n default: 'id'\n },\n pagination: {\n type: Object,\n default: function _default() {}\n }\n },\n data: function data() {\n return {\n searchLength: 0,\n defaultPagination: {\n descending: false,\n page: 1,\n rowsPerPage: 5,\n sortBy: null,\n totalItems: 0\n },\n expanded: {},\n actionsClasses: 'v-data-iterator__actions',\n actionsRangeControlsClasses: 'v-data-iterator__actions__range-controls',\n actionsSelectClasses: 'v-data-iterator__actions__select',\n actionsPaginationClasses: 'v-data-iterator__actions__pagination'\n };\n },\n computed: {\n computedPagination: function computedPagination() {\n return this.hasPagination ? this.pagination : this.defaultPagination;\n },\n computedRowsPerPageItems: function computedRowsPerPageItems() {\n var _this = this;\n return this.rowsPerPageItems.map(function (item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"isObject\"])(item) ? Object.assign({}, item, {\n text: _this.$vuetify.t(item.text)\n }) : { value: item, text: Number(item).toLocaleString(_this.$vuetify.lang.current) };\n });\n },\n hasPagination: function hasPagination() {\n var pagination = this.pagination || {};\n return Object.keys(pagination).length > 0;\n },\n hasSelectAll: function hasSelectAll() {\n return this.selectAll !== undefined && this.selectAll !== false;\n },\n itemsLength: function itemsLength() {\n if (this.hasSearch) return this.searchLength;\n return this.totalItems || this.items.length;\n },\n indeterminate: function indeterminate() {\n return this.hasSelectAll && this.someItems && !this.everyItem;\n },\n everyItem: function everyItem() {\n var _this = this;\n return this.filteredItems.length && this.filteredItems.every(function (i) {\n return _this.isSelected(i);\n });\n },\n someItems: function someItems() {\n var _this = this;\n return this.filteredItems.some(function (i) {\n return _this.isSelected(i);\n });\n },\n getPage: function getPage() {\n var rowsPerPage = this.computedPagination.rowsPerPage;\n return rowsPerPage === Object(rowsPerPage) ? rowsPerPage.value : rowsPerPage;\n },\n pageStart: function pageStart() {\n return this.getPage === -1 ? 0 : (this.computedPagination.page - 1) * this.getPage;\n },\n pageStop: function pageStop() {\n return this.getPage === -1 ? this.itemsLength : this.computedPagination.page * this.getPage;\n },\n filteredItems: function filteredItems() {\n return this.filteredItemsImpl();\n },\n selected: function selected() {\n var selected = {};\n for (var index = 0; index < this.value.length; index++) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(this.value[index], this.itemKey);\n selected[key] = true;\n }\n return selected;\n },\n hasSearch: function hasSearch() {\n return this.search != null;\n }\n },\n watch: {\n items: function items() {\n var _this = this;\n if (this.pageStart >= this.itemsLength) {\n this.resetPagination();\n }\n if (this.totalItems === null) {\n var newItemKeys_1 = new Set(this.items.map(function (item) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(item, _this.itemKey);\n }));\n var selection = this.value.filter(function (item) {\n return newItemKeys_1.has(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(item, _this.itemKey));\n });\n if (selection.length !== this.value.length) {\n this.$emit('input', selection);\n }\n }\n },\n search: function search() {\n var _this = this;\n this.$nextTick(function () {\n _this.updatePagination({ page: 1, totalItems: _this.itemsLength });\n });\n },\n 'computedPagination.sortBy': 'resetPagination',\n 'computedPagination.descending': 'resetPagination'\n },\n methods: {\n initPagination: function initPagination() {\n if (!this.rowsPerPageItems.length) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleWarn\"])(\"The prop 'rows-per-page-items' can not be empty\", this);\n } else {\n this.defaultPagination.rowsPerPage = this.rowsPerPageItems[0];\n }\n this.defaultPagination.totalItems = this.items.length;\n this.updatePagination(Object.assign({}, this.defaultPagination, this.pagination));\n },\n updatePagination: function updatePagination(val) {\n var pagination = this.hasPagination ? this.pagination : this.defaultPagination;\n var updatedPagination = Object.assign({}, pagination, val);\n this.$emit('update:pagination', updatedPagination);\n if (!this.hasPagination) {\n this.defaultPagination = updatedPagination;\n }\n },\n isSelected: function isSelected(item) {\n return this.selected[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(item, this.itemKey)];\n },\n isExpanded: function isExpanded(item) {\n return this.expanded[Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(item, this.itemKey)];\n },\n filteredItemsImpl: function filteredItemsImpl() {\n var additionalFilterArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n additionalFilterArgs[_i] = arguments[_i];\n }\n if (this.totalItems) return this.items;\n var items = this.items.slice();\n if (this.hasSearch) {\n items = this.customFilter.apply(this, __spread([items, this.search, this.filter], additionalFilterArgs));\n this.searchLength = items.length;\n }\n items = this.customSort(items, this.computedPagination.sortBy, this.computedPagination.descending);\n return this.hideActions && !this.hasPagination ? items : items.slice(this.pageStart, this.pageStop);\n },\n resetPagination: function resetPagination() {\n this.computedPagination.page !== 1 && this.updatePagination({ page: 1 });\n },\n sort: function sort(index) {\n var _a = this.computedPagination,\n sortBy = _a.sortBy,\n descending = _a.descending;\n if (sortBy === null) {\n this.updatePagination({ sortBy: index, descending: false });\n } else if (sortBy === index && !descending) {\n this.updatePagination({ descending: true });\n } else if (sortBy !== index) {\n this.updatePagination({ sortBy: index, descending: false });\n } else if (!this.mustSort) {\n this.updatePagination({ sortBy: null, descending: null });\n } else {\n this.updatePagination({ sortBy: index, descending: false });\n }\n },\n toggle: function toggle(value) {\n var _this = this;\n var selected = Object.assign({}, this.selected);\n for (var index = 0; index < this.filteredItems.length; index++) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(this.filteredItems[index], this.itemKey);\n selected[key] = value;\n }\n this.$emit('input', this.items.filter(function (i) {\n var key = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(i, _this.itemKey);\n return selected[key];\n }));\n },\n createProps: function createProps(item, index) {\n var _this = this;\n var props = { item: item, index: index };\n var keyProp = this.itemKey;\n var itemKey = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(item, keyProp);\n Object.defineProperty(props, 'selected', {\n get: function get() {\n return _this.selected[itemKey];\n },\n set: function set(value) {\n if (itemKey == null) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleWarn\"])(\"\\\"\" + keyProp + \"\\\" attribute must be defined for item\", _this);\n }\n var selected = _this.value.slice();\n if (value) selected.push(item);else selected = selected.filter(function (i) {\n return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__[\"getObjectValueByPath\"])(i, keyProp) !== itemKey;\n });\n _this.$emit('input', selected);\n }\n });\n Object.defineProperty(props, 'expanded', {\n get: function get() {\n return _this.expanded[itemKey];\n },\n set: function set(value) {\n if (itemKey == null) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_7__[\"consoleWarn\"])(\"\\\"\" + keyProp + \"\\\" attribute must be defined for item\", _this);\n }\n if (!_this.expand) {\n for (var key in _this.expanded) {\n _this.expanded.hasOwnProperty(key) && _this.$set(_this.expanded, key, false);\n }\n }\n _this.$set(_this.expanded, itemKey, value);\n }\n });\n return props;\n },\n genItems: function genItems() {\n if (!this.itemsLength && !this.items.length) {\n var noData = this.$slots['no-data'] || this.$vuetify.t(this.noDataText);\n return [this.genEmptyItems(noData)];\n }\n if (!this.filteredItems.length) {\n var noResults = this.$slots['no-results'] || this.$vuetify.t(this.noResultsText);\n return [this.genEmptyItems(noResults)];\n }\n return this.genFilteredItems();\n },\n genPrevIcon: function genPrevIcon() {\n var _this = this;\n return this.$createElement(_components_VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n props: {\n disabled: this.computedPagination.page === 1,\n icon: true,\n flat: true\n },\n on: {\n click: function click() {\n var page = _this.computedPagination.page;\n _this.updatePagination({ page: page - 1 });\n }\n },\n attrs: {\n 'aria-label': this.$vuetify.t('$vuetify.dataIterator.prevPage')\n }\n }, [this.$createElement(_components_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.$vuetify.rtl ? this.nextIcon : this.prevIcon)]);\n },\n genNextIcon: function genNextIcon() {\n var _this = this;\n var pagination = this.computedPagination;\n var disabled = pagination.rowsPerPage < 0 || pagination.page * pagination.rowsPerPage >= this.itemsLength || this.pageStop < 0;\n return this.$createElement(_components_VBtn__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n props: {\n disabled: disabled,\n icon: true,\n flat: true\n },\n on: {\n click: function click() {\n var page = _this.computedPagination.page;\n _this.updatePagination({ page: page + 1 });\n }\n },\n attrs: {\n 'aria-label': this.$vuetify.t('$vuetify.dataIterator.nextPage')\n }\n }, [this.$createElement(_components_VIcon__WEBPACK_IMPORTED_MODULE_1__[\"default\"], this.$vuetify.rtl ? this.prevIcon : this.nextIcon)]);\n },\n genSelect: function genSelect() {\n var _this = this;\n return this.$createElement('div', {\n 'class': this.actionsSelectClasses\n }, [this.$vuetify.t(this.rowsPerPageText), this.$createElement(_components_VSelect__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n attrs: {\n 'aria-label': this.$vuetify.t(this.rowsPerPageText)\n },\n props: {\n items: this.computedRowsPerPageItems,\n value: this.computedPagination.rowsPerPage,\n hideDetails: true,\n menuProps: {\n auto: true,\n dark: this.dark,\n light: this.light,\n minWidth: '75px'\n }\n },\n on: {\n input: function input(val) {\n _this.updatePagination({\n page: 1,\n rowsPerPage: val\n });\n }\n }\n })]);\n },\n genPagination: function genPagination() {\n var _this = this;\n var _a;\n var pagination = '–';\n if (this.itemsLength) {\n var stop = this.itemsLength < this.pageStop || this.pageStop < 0 ? this.itemsLength : this.pageStop;\n pagination = this.$scopedSlots.pageText ? this.$scopedSlots.pageText({\n pageStart: this.pageStart + 1,\n pageStop: stop,\n itemsLength: this.itemsLength\n }) : (_a = this.$vuetify).t.apply(_a, __spread(['$vuetify.dataIterator.pageText'], [this.pageStart + 1, stop, this.itemsLength].map(function (n) {\n return Number(n).toLocaleString(_this.$vuetify.lang.current);\n })));\n }\n return this.$createElement('div', {\n 'class': this.actionsPaginationClasses\n }, [pagination]);\n },\n genActions: function genActions() {\n var rangeControls = this.$createElement('div', {\n 'class': this.actionsRangeControlsClasses\n }, [this.genPagination(), this.genPrevIcon(), this.genNextIcon()]);\n return [this.$createElement('div', {\n 'class': this.actionsClasses\n }, [this.$slots['actions-prepend'] ? this.$createElement('div', {}, this.$slots['actions-prepend']) : null, this.rowsPerPageItems.length > 1 ? this.genSelect() : null, rangeControls, this.$slots['actions-append'] ? this.$createElement('div', {}, this.$slots['actions-append']) : null])];\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/delayable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/delayable.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n name: 'delayable',\n props: {\n openDelay: {\n type: [Number, String],\n default: 0\n },\n closeDelay: {\n type: [Number, String],\n default: 0\n }\n },\n data: function data() {\n return {\n openTimeout: undefined,\n closeTimeout: undefined\n };\n },\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay: function clearDelay() {\n clearTimeout(this.openTimeout);\n clearTimeout(this.closeTimeout);\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay: function runDelay(type, cb) {\n var _this = this;\n this.clearDelay();\n var delay = parseInt(this[type + \"Delay\"], 10);\n this[type + \"Timeout\"] = setTimeout(cb || function () {\n _this.isActive = { open: true, close: false }[type];\n }, delay);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/dependent.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/dependent.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/mixins */ \"./src/util/mixins.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\nfunction searchChildren(children) {\n var results = [];\n for (var index = 0; index < children.length; index++) {\n var child = children[index];\n if (child.isActive && child.isDependent) {\n results.push(child);\n } else {\n results.push.apply(results, __spread(searchChildren(child.$children)));\n }\n }\n return results;\n}\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().extend({\n name: 'dependent',\n data: function data() {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n };\n },\n watch: {\n isActive: function isActive(val) {\n if (val) return;\n var openDependents = this.getOpenDependents();\n for (var index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false;\n }\n }\n },\n methods: {\n getOpenDependents: function getOpenDependents() {\n if (this.closeDependents) return searchChildren(this.$children);\n return [];\n },\n getOpenDependentElements: function getOpenDependentElements() {\n var result = [];\n var openDependents = this.getOpenDependents();\n for (var index = 0; index < openDependents.length; index++) {\n result.push.apply(result, __spread(openDependents[index].getClickableDependentElements()));\n }\n return result;\n },\n getClickableDependentElements: function getClickableDependentElements() {\n var result = [this.$el];\n if (this.$refs.content) result.push(this.$refs.content);\n if (this.overlay) result.push(this.overlay);\n result.push.apply(result, __spread(this.getOpenDependentElements()));\n return result;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/detachable.js\":\n/*!**********************************!*\\\n !*** ./src/mixins/detachable.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bootable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bootable */ \"./src/mixins/bootable.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/console */ \"./src/util/console.ts\");\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nfunction validateAttachTarget(val) {\n var type = typeof val === 'undefined' ? 'undefined' : _typeof(val);\n if (type === 'boolean' || type === 'string') return true;\n return val.nodeType === Node.ELEMENT_NODE;\n}\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'detachable',\n mixins: [_bootable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n props: {\n attach: {\n type: null,\n default: false,\n validator: validateAttachTarget\n },\n contentClass: {\n default: ''\n }\n },\n data: function data() {\n return {\n hasDetached: false\n };\n },\n watch: {\n attach: function attach() {\n this.hasDetached = false;\n this.initDetach();\n },\n hasContent: 'initDetach'\n },\n beforeMount: function beforeMount() {\n var _this = this;\n this.$nextTick(function () {\n if (_this.activatorNode) {\n var activator = Array.isArray(_this.activatorNode) ? _this.activatorNode : [_this.activatorNode];\n activator.forEach(function (node) {\n node.elm && _this.$el.parentNode.insertBefore(node.elm, _this.$el);\n });\n }\n });\n },\n mounted: function mounted() {\n !this.lazy && this.initDetach();\n },\n deactivated: function deactivated() {\n this.isActive = false;\n },\n beforeDestroy: function beforeDestroy() {\n // IE11 Fix\n try {\n if (this.$refs.content) {\n this.$refs.content.parentNode.removeChild(this.$refs.content);\n }\n if (this.activatorNode) {\n var activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];\n activator.forEach(function (node) {\n node.elm && node.elm.parentNode.removeChild(node.elm);\n });\n }\n } catch (e) {\n console.log(e);\n }\n },\n methods: {\n getScopeIdAttrs: function getScopeIdAttrs() {\n var _a;\n var scopeId = this.$vnode && this.$vnode.context.$options._scopeId;\n return scopeId && (_a = {}, _a[scopeId] = '', _a);\n },\n initDetach: function initDetach() {\n if (this._isDestroyed || !this.$refs.content || this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return;\n var target;\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]');\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach);\n } else {\n // DOM Element\n target = this.attach;\n }\n if (!target) {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])(\"Unable to locate target \" + (this.attach || '[data-app]'), this);\n return;\n }\n target.insertBefore(this.$refs.content, target.firstChild);\n this.hasDetached = true;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/elevatable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/elevatable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'elevatable',\n props: {\n elevation: [Number, String]\n },\n computed: {\n computedElevation: function computedElevation() {\n return this.elevation;\n },\n elevationClasses: function elevationClasses() {\n var _a;\n if (!this.computedElevation && this.computedElevation !== 0) return {};\n return _a = {}, _a[\"elevation-\" + this.computedElevation] = true, _a;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/filterable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/filterable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'filterable',\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/groupable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/groupable.ts ***!\n \\*********************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var _registrable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registrable */ \"./src/mixins/registrable.ts\");\n// Mixins\n\nfunction factory(namespace, child, parent) {\n return Object(_registrable__WEBPACK_IMPORTED_MODULE_0__[\"inject\"])(namespace, child, parent).extend({\n name: 'groupable',\n props: {\n activeClass: {\n type: String,\n default: function _default() {\n if (!this[namespace]) return undefined;\n return this[namespace].activeClass;\n }\n },\n disabled: Boolean\n },\n data: function data() {\n return {\n isActive: false\n };\n },\n computed: {\n groupClasses: function groupClasses() {\n var _a;\n if (!this.activeClass) return {};\n return _a = {}, _a[this.activeClass] = this.isActive, _a;\n }\n },\n created: function created() {\n this[namespace] && this[namespace].register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this[namespace] && this[namespace].unregister(this);\n },\n methods: {\n toggle: function toggle() {\n this.$emit('change');\n }\n }\n });\n}\n/* eslint-disable-next-line no-redeclare */\nvar Groupable = factory('itemGroup');\n/* harmony default export */ __webpack_exports__[\"default\"] = (Groupable);\n\n/***/ }),\n\n/***/ \"./src/mixins/loadable.ts\":\n/*!********************************!*\\\n !*** ./src/mixins/loadable.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/VProgressLinear */ \"./src/components/VProgressLinear/index.ts\");\n\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n name: 'loadable',\n props: {\n loading: {\n type: [Boolean, String],\n default: false\n }\n },\n methods: {\n genProgress: function genProgress() {\n if (this.loading === false) return null;\n return this.$slots.progress || this.$createElement(_components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n props: {\n color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n height: 2,\n indeterminate: true\n }\n });\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/maskable.js\":\n/*!********************************!*\\\n !*** ./src/mixins/maskable.js ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_mask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/mask */ \"./src/util/mask.ts\");\n/**\n * Maskable\n *\n * @mixin\n *\n * Creates an input mask that is\n * generated from a masked str\n *\n * Example: mask=\"#### #### #### ####\"\n */\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'maskable',\n props: {\n dontFillMaskBlanks: Boolean,\n mask: {\n type: [Object, String],\n default: null\n },\n returnMaskedValue: Boolean,\n value: { required: false }\n },\n data: function data(vm) {\n return {\n selection: 0,\n lazySelection: 0,\n lazyValue: vm.value,\n preDefined: {\n 'credit-card': '#### - #### - #### - ####',\n 'date': '##/##/####',\n 'date-with-time': '##/##/#### ##:##',\n 'phone': '(###) ### - ####',\n 'social': '###-##-####',\n 'time': '##:##',\n 'time-with-seconds': '##:##:##'\n }\n };\n },\n computed: {\n masked: function masked() {\n var preDefined = this.preDefined[this.mask];\n var mask = preDefined || this.mask || '';\n return mask.split('');\n }\n },\n watch: {\n /**\n * Make sure the cursor is in the correct\n * location when the mask changes\n */\n mask: function mask() {\n var _this = this;\n if (!this.$refs.input) return;\n var oldValue = this.$refs.input.value;\n var newValue = this.maskText(Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"unmaskText\"])(this.lazyValue));\n var position = 0;\n var selection = this.selection;\n for (var index = 0; index < selection; index++) {\n Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"isMaskDelimiter\"])(oldValue[index]) || position++;\n }\n selection = 0;\n if (newValue) {\n for (var index = 0; index < newValue.length; index++) {\n Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"isMaskDelimiter\"])(newValue[index]) || position--;\n selection++;\n if (position <= 0) break;\n }\n }\n this.$nextTick(function () {\n _this.$refs.input.value = newValue;\n _this.setCaretPosition(selection);\n });\n }\n },\n beforeMount: function beforeMount() {\n if (!this.mask || this.value == null || !this.returnMaskedValue) return;\n var value = this.maskText(this.value);\n // See if masked value does not\n // match the user given value\n if (value === this.value) return;\n this.$emit('input', value);\n },\n methods: {\n setCaretPosition: function setCaretPosition(selection) {\n var _this = this;\n this.selection = selection;\n window.setTimeout(function () {\n _this.$refs.input && _this.$refs.input.setSelectionRange(_this.selection, _this.selection);\n }, 0);\n },\n updateRange: function updateRange() {\n /* istanbul ignore next */\n if (!this.$refs.input) return;\n var newValue = this.maskText(this.lazyValue);\n var selection = 0;\n this.$refs.input.value = newValue;\n if (newValue) {\n for (var index = 0; index < newValue.length; index++) {\n if (this.lazySelection <= 0) break;\n Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"isMaskDelimiter\"])(newValue[index]) || this.lazySelection--;\n selection++;\n }\n }\n this.setCaretPosition(selection);\n // this.$emit() must occur only when all internal values are correct\n this.$emit('input', this.returnMaskedValue ? this.$refs.input.value : this.lazyValue);\n },\n maskText: function maskText(text) {\n return this.mask ? Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"maskText\"])(text, this.masked, this.dontFillMaskBlanks) : text;\n },\n unmaskText: function unmaskText(text) {\n return this.mask && !this.returnMaskedValue ? Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"unmaskText\"])(text) : text;\n },\n // When the input changes and is\n // re-created, ensure that the\n // caret location is correct\n setSelectionRange: function setSelectionRange() {\n this.$nextTick(this.updateRange);\n },\n resetSelections: function resetSelections(input) {\n if (!input.selectionEnd) return;\n this.selection = input.selectionEnd;\n this.lazySelection = 0;\n for (var index = 0; index < this.selection; index++) {\n Object(_util_mask__WEBPACK_IMPORTED_MODULE_0__[\"isMaskDelimiter\"])(input.value[index]) || this.lazySelection++;\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/measurable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/measurable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Helpers\n\n// Types\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n name: 'measurable',\n props: {\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String]\n },\n computed: {\n measurableStyles: function measurableStyles() {\n var styles = {};\n var height = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.height);\n var minHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.minHeight);\n var minWidth = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.minWidth);\n var maxHeight = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.maxHeight);\n var maxWidth = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.maxWidth);\n var width = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_0__[\"convertToUnit\"])(this.width);\n if (height) styles.height = height;\n if (minHeight) styles.minHeight = minHeight;\n if (minWidth) styles.minWidth = minWidth;\n if (maxHeight) styles.maxHeight = maxHeight;\n if (maxWidth) styles.maxWidth = maxWidth;\n if (width) styles.width = width;\n return styles;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/menuable.js\":\n/*!********************************!*\\\n !*** ./src/mixins/menuable.js ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _positionable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./positionable */ \"./src/mixins/positionable.ts\");\n/* harmony import */ var _stackable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackable */ \"./src/mixins/stackable.ts\");\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n/* eslint-disable object-property-newline */\nvar dimensions = {\n activator: {\n top: 0, left: 0,\n bottom: 0, right: 0,\n width: 0, height: 0,\n offsetTop: 0, scrollHeight: 0\n },\n content: {\n top: 0, left: 0,\n bottom: 0, right: 0,\n width: 0, height: 0,\n offsetTop: 0, scrollHeight: 0\n },\n hasWindow: false\n};\n/* eslint-enable object-property-newline */\n/**\n * Menuable\n *\n * @mixin\n *\n * Used for fixed or absolutely positioning\n * elements within the DOM\n * Can calculate X and Y axis overflows\n * As well as be manually positioned\n */\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'menuable',\n mixins: [_positionable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _stackable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n props: {\n activator: {\n default: null,\n validator: function validator(val) {\n return ['string', 'object'].includes(typeof val === 'undefined' ? 'undefined' : _typeof(val));\n }\n },\n allowOverflow: Boolean,\n inputActivator: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto'\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0\n },\n nudgeRight: {\n type: [Number, String],\n default: 0\n },\n nudgeTop: {\n type: [Number, String],\n default: 0\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null\n },\n positionY: {\n type: Number,\n default: null\n },\n zIndex: {\n type: [Number, String],\n default: null\n }\n },\n data: function data() {\n return {\n absoluteX: 0,\n absoluteY: 0,\n activatorFixed: false,\n dimensions: Object.assign({}, dimensions),\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6\n };\n },\n computed: {\n computedLeft: function computedLeft() {\n var a = this.dimensions.activator;\n var c = this.dimensions.content;\n var activatorLeft = (this.isAttached ? a.offsetLeft : a.left) || 0;\n var minWidth = Math.max(a.width, c.width);\n var left = 0;\n left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft;\n if (this.offsetX) {\n var maxWidth = isNaN(this.maxWidth) ? a.width : Math.min(a.width, this.maxWidth);\n left += this.left ? -maxWidth : a.width;\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n if (this.nudgeRight) left += parseInt(this.nudgeRight);\n return left;\n },\n computedTop: function computedTop() {\n var a = this.dimensions.activator;\n var c = this.dimensions.content;\n var top = 0;\n if (this.top) top += a.height - c.height;\n if (this.isAttached) top += a.offsetTop;else top += a.top + this.pageYOffset;\n if (this.offsetY) top += this.top ? -a.height : a.height;\n if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n return top;\n },\n hasActivator: function hasActivator() {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || this.activator || this.inputActivator;\n },\n isAttached: function isAttached() {\n return this.attach !== false;\n }\n },\n watch: {\n disabled: function disabled(val) {\n val && this.callDeactivate();\n },\n isActive: function isActive(val) {\n if (this.disabled) return;\n val ? this.callActivate() : this.callDeactivate();\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions'\n },\n beforeMount: function beforeMount() {\n this.checkForWindow();\n },\n methods: {\n absolutePosition: function absolutePosition() {\n return {\n offsetTop: 0,\n offsetLeft: 0,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0\n };\n },\n activate: function activate() {},\n calcLeft: function calcLeft(menuWidth) {\n return (this.isAttached ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth)) + \"px\";\n },\n calcTop: function calcTop() {\n return (this.isAttached ? this.computedTop : this.calcYOverflow(this.computedTop)) + \"px\";\n },\n calcXOverflow: function calcXOverflow(left, menuWidth) {\n var xOverflow = left + menuWidth - this.pageWidth + 12;\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0);\n } else {\n left = Math.max(left, 12);\n }\n return left + this.getOffsetLeft();\n },\n calcYOverflow: function calcYOverflow(top) {\n var documentHeight = this.getInnerHeight();\n var toTop = this.pageYOffset + documentHeight;\n var activator = this.dimensions.activator;\n var contentHeight = this.dimensions.content.height;\n var totalHeight = top + contentHeight;\n var isOverflowing = toTop < totalHeight;\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing && this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight) {\n top = this.pageYOffset + (activator.top - contentHeight);\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12;\n // If overflowing top\n } else if (top < this.pageYOffset && !this.allowOverflow) {\n top = this.pageYOffset + 12;\n }\n return top < 12 ? 12 : top;\n },\n callActivate: function callActivate() {\n if (!this.hasWindow) return;\n this.activate();\n },\n callDeactivate: function callDeactivate() {\n this.isContentActive = false;\n this.deactivate();\n },\n checkForWindow: function checkForWindow() {\n if (!this.hasWindow) {\n this.hasWindow = typeof window !== 'undefined';\n }\n },\n checkForPageYOffset: function checkForPageYOffset() {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();\n }\n },\n checkActivatorFixed: function checkActivatorFixed() {\n if (this.attach !== false) return;\n var el = this.getActivator();\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true;\n return;\n }\n el = el.offsetParent;\n }\n this.activatorFixed = false;\n },\n deactivate: function deactivate() {},\n getActivator: function getActivator(e) {\n if (this.inputActivator) {\n return this.$el.querySelector('.v-input__slot');\n }\n if (this.activator) {\n return typeof this.activator === 'string' ? document.querySelector(this.activator) : this.activator;\n }\n if (this.$refs.activator) {\n return this.$refs.activator.children.length > 0 ? this.$refs.activator.children[0] : this.$refs.activator;\n }\n if (e) {\n this.activatedBy = e.currentTarget || e.target;\n return this.activatedBy;\n }\n if (this.activatedBy) return this.activatedBy;\n if (this.activatorNode) {\n var activator = Array.isArray(this.activatorNode) ? this.activatorNode[0] : this.activatorNode;\n var el = activator && activator.elm;\n if (el) return el;\n }\n },\n getInnerHeight: function getInnerHeight() {\n if (!this.hasWindow) return 0;\n return window.innerHeight || document.documentElement.clientHeight;\n },\n getOffsetLeft: function getOffsetLeft() {\n if (!this.hasWindow) return 0;\n return window.pageXOffset || document.documentElement.scrollLeft;\n },\n getOffsetTop: function getOffsetTop() {\n if (!this.hasWindow) return 0;\n return window.pageYOffset || document.documentElement.scrollTop;\n },\n getRoundedBoundedClientRect: function getRoundedBoundedClientRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n };\n },\n measure: function measure(el) {\n if (!el || !this.hasWindow) return null;\n var rect = this.getRoundedBoundedClientRect(el);\n // Account for activator margin\n if (this.isAttached) {\n var style = window.getComputedStyle(el);\n rect.left = parseInt(style.marginLeft);\n rect.top = parseInt(style.marginTop);\n }\n return rect;\n },\n sneakPeek: function sneakPeek(cb) {\n var _this = this;\n requestAnimationFrame(function () {\n var el = _this.$refs.content;\n if (!el || _this.isShown(el)) return cb();\n el.style.display = 'inline-block';\n cb();\n el.style.display = 'none';\n });\n },\n startTransition: function startTransition() {\n var _this = this;\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n _this.isContentActive = _this.hasJustFocused = _this.isActive;\n resolve();\n });\n });\n },\n isShown: function isShown(el) {\n return el.style.display !== 'none';\n },\n updateDimensions: function updateDimensions() {\n var _this = this;\n this.checkForWindow();\n this.checkActivatorFixed();\n this.checkForPageYOffset();\n this.pageWidth = document.documentElement.clientWidth;\n var dimensions = {};\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition();\n } else {\n var activator = this.getActivator();\n dimensions.activator = this.measure(activator);\n dimensions.activator.offsetLeft = activator.offsetLeft;\n if (this.isAttached) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop;\n } else {\n dimensions.activator.offsetTop = 0;\n }\n }\n // Display and hide to get dimensions\n this.sneakPeek(function () {\n dimensions.content = _this.measure(_this.$refs.content);\n _this.dimensions = dimensions;\n });\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/overlayable.ts\":\n/*!***********************************!*\\\n !*** ./src/mixins/overlayable.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _stylus_components_overlay_styl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stylus/components/_overlay.styl */ \"./src/stylus/components/_overlay.styl\");\n/* harmony import */ var _stylus_components_overlay_styl__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_stylus_components_overlay_styl__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n// Styles\n\n// Utilities\n\n// Types\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_2___default.a.extend().extend({\n name: 'overlayable',\n props: {\n hideOverlay: Boolean\n },\n data: function data() {\n return {\n overlay: null,\n overlayOffset: 0,\n overlayTimeout: undefined,\n overlayTransitionDuration: 500 + 150 // transition + delay\n };\n },\n watch: {\n hideOverlay: function hideOverlay(value) {\n if (value) this.removeOverlay();else this.genOverlay();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.removeOverlay();\n },\n methods: {\n genOverlay: function genOverlay() {\n var _this = this;\n // If fn is called and timeout is active\n // or overlay already exists\n // cancel removal of overlay and re-add active\n if (!this.isActive || this.hideOverlay || this.isActive && this.overlayTimeout || this.overlay) {\n clearTimeout(this.overlayTimeout);\n return this.overlay && this.overlay.classList.add('v-overlay--active');\n }\n this.overlay = document.createElement('div');\n this.overlay.className = 'v-overlay';\n if (this.absolute) this.overlay.className += ' v-overlay--absolute';\n this.hideScroll();\n var parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');\n parent && parent.insertBefore(this.overlay, parent.firstChild);\n // eslint-disable-next-line no-unused-expressions\n this.overlay.clientHeight; // Force repaint\n requestAnimationFrame(function () {\n // https://github.com/vuetifyjs/vuetify/issues/4678\n if (!_this.overlay) return;\n _this.overlay.className += ' v-overlay--active';\n if (_this.activeZIndex !== undefined) {\n _this.overlay.style.zIndex = String(_this.activeZIndex - 1);\n }\n });\n return true;\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay: function removeOverlay(showScroll) {\n var _this = this;\n if (showScroll === void 0) {\n showScroll = true;\n }\n if (!this.overlay) {\n return showScroll && this.showScroll();\n }\n this.overlay.classList.remove('v-overlay--active');\n this.overlayTimeout = window.setTimeout(function () {\n // IE11 Fix\n try {\n if (_this.overlay && _this.overlay.parentNode) {\n _this.overlay.parentNode.removeChild(_this.overlay);\n }\n _this.overlay = null;\n showScroll && _this.showScroll();\n } catch (e) {\n console.log(e);\n }\n clearTimeout(_this.overlayTimeout);\n _this.overlayTimeout = undefined;\n }, this.overlayTransitionDuration);\n },\n scrollListener: function scrollListener(e) {\n if (e.type === 'keydown') {\n if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n e.target.isContentEditable) return;\n var up = [_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].up, _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].pageup];\n var down = [_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].down, _util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"keyCodes\"].pagedown];\n if (up.includes(e.keyCode)) {\n e.deltaY = -1;\n } else if (down.includes(e.keyCode)) {\n e.deltaY = 1;\n } else {\n return;\n }\n }\n if (e.target === this.overlay || e.type !== 'keydown' && e.target === document.body || this.checkPath(e)) e.preventDefault();\n },\n hasScrollbar: function hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n var style = window.getComputedStyle(el);\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight;\n },\n shouldScroll: function shouldScroll(el, delta) {\n if (el.scrollTop === 0 && delta < 0) return true;\n return el.scrollTop + el.clientHeight === el.scrollHeight && delta > 0;\n },\n isInside: function isInside(el, parent) {\n if (el === parent) {\n return true;\n } else if (el === null || el === document.body) {\n return false;\n } else {\n return this.isInside(el.parentNode, parent);\n }\n },\n checkPath: function checkPath(e) {\n var path = e.path || this.composedPath(e);\n var delta = e.deltaY;\n if (e.type === 'keydown' && path[0] === document.body) {\n var dialog = this.$refs.dialog;\n var selected = window.getSelection().anchorNode;\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return this.shouldScroll(dialog, delta);\n }\n return true;\n }\n for (var index = 0; index < path.length; index++) {\n var el = path[index];\n if (el === document) return true;\n if (el === document.documentElement) return true;\n if (el === this.$refs.content) return true;\n if (this.hasScrollbar(el)) return this.shouldScroll(el, delta);\n }\n return true;\n },\n /**\n * Polyfill for Event.prototype.composedPath\n */\n composedPath: function composedPath(e) {\n if (e.composedPath) return e.composedPath();\n var path = [];\n var el = e.target;\n while (el) {\n path.push(el);\n if (el.tagName === 'HTML') {\n path.push(document);\n path.push(window);\n return path;\n }\n el = el.parentElement;\n }\n return path;\n },\n hideScroll: function hideScroll() {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement.classList.add('overflow-y-hidden');\n } else {\n Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"addPassiveEventListener\"])(window, 'wheel', this.scrollListener, { passive: false });\n window.addEventListener('keydown', this.scrollListener);\n }\n },\n showScroll: function showScroll() {\n document.documentElement.classList.remove('overflow-y-hidden');\n window.removeEventListener('wheel', this.scrollListener);\n window.removeEventListener('keydown', this.scrollListener);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/picker-button.ts\":\n/*!*************************************!*\\\n !*** ./src/mixins/picker-button.ts ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/mixins */ \"./src/util/mixins.ts\");\n// Mixins\n\n// Utilities\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n methods: {\n genPickerButton: function genPickerButton(prop, value, content, readonly, staticClass) {\n var _this = this;\n if (readonly === void 0) {\n readonly = false;\n }\n if (staticClass === void 0) {\n staticClass = '';\n }\n var active = this[prop] === value;\n var click = function click(event) {\n event.stopPropagation();\n _this.$emit(\"update:\" + prop, value);\n };\n return this.$createElement('div', {\n staticClass: (\"v-picker__title__btn \" + staticClass).trim(),\n 'class': {\n 'v-picker__title__btn--active': active,\n 'v-picker__title__btn--readonly': readonly\n },\n on: active || readonly ? undefined : { click: click }\n }, Array.isArray(content) ? content : [content]);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/picker.ts\":\n/*!******************************!*\\\n !*** ./src/mixins/picker.ts ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VPicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/VPicker */ \"./src/components/VPicker/index.ts\");\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _themeable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/mixins */ \"./src/util/mixins.ts\");\n// Components\n\n// Mixins\n\n\n// Utils\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _themeable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n/* @vue/component */\n).extend({\n name: 'picker',\n props: {\n fullWidth: Boolean,\n headerColor: String,\n landscape: Boolean,\n noTitle: Boolean,\n width: {\n type: [Number, String],\n default: 290\n }\n },\n methods: {\n genPickerTitle: function genPickerTitle() {\n return null;\n },\n genPickerBody: function genPickerBody() {\n return null;\n },\n genPickerActionsSlot: function genPickerActionsSlot() {\n return this.$scopedSlots.default ? this.$scopedSlots.default({\n save: this.save,\n cancel: this.cancel\n }) : this.$slots.default;\n },\n genPicker: function genPicker(staticClass) {\n var children = [];\n if (!this.noTitle) {\n var title = this.genPickerTitle();\n title && children.push(title);\n }\n var body = this.genPickerBody();\n body && children.push(body);\n children.push(this.$createElement('template', { slot: 'actions' }, [this.genPickerActionsSlot()]));\n return this.$createElement(_components_VPicker__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n staticClass: staticClass,\n props: {\n color: this.headerColor || this.color,\n dark: this.dark,\n fullWidth: this.fullWidth,\n landscape: this.landscape,\n light: this.light,\n width: this.width\n }\n }, children);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/positionable.ts\":\n/*!************************************!*\\\n !*** ./src/mixins/positionable.ts ***!\n \\************************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n\n\nvar availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean\n};\nfunction factory(selected) {\n if (selected === void 0) {\n selected = [];\n }\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'positionable',\n props: selected.length ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"filterObjectOnKeys\"])(availableProps, selected) : availableProps\n });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (factory());\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n\n/***/ }),\n\n/***/ \"./src/mixins/proxyable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/proxyable.ts ***!\n \\*********************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction factory(prop, event) {\n if (prop === void 0) {\n prop = 'value';\n }\n if (event === void 0) {\n event = 'change';\n }\n var _a, _b;\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'proxyable',\n model: {\n prop: prop,\n event: event\n },\n props: (_a = {}, _a[prop] = {\n required: false\n }, _a),\n data: function data() {\n return {\n internalLazyValue: this[prop]\n };\n },\n computed: {\n internalValue: {\n get: function get() {\n return this.internalLazyValue;\n },\n set: function set(val) {\n if (val === this.internalLazyValue) return;\n this.internalLazyValue = val;\n this.$emit(event, val);\n }\n }\n },\n watch: (_b = {}, _b[prop] = function (val) {\n this.internalLazyValue = val;\n }, _b)\n });\n}\n/* eslint-disable-next-line no-redeclare */\nvar Proxyable = factory();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Proxyable);\n\n/***/ }),\n\n/***/ \"./src/mixins/registrable.ts\":\n/*!***********************************!*\\\n !*** ./src/mixins/registrable.ts ***!\n \\***********************************/\n/*! exports provided: inject, provide */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return inject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"provide\", function() { return provide; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/console */ \"./src/util/console.ts\");\n\n\nfunction generateWarning(child, parent) {\n return function () {\n return Object(_util_console__WEBPACK_IMPORTED_MODULE_1__[\"consoleWarn\"])(\"The \" + child + \" component must be used inside a \" + parent);\n };\n}\nfunction inject(namespace, child, parent) {\n var _a;\n var defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent)\n } : null;\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'registrable-inject',\n inject: (_a = {}, _a[namespace] = {\n default: defaultImpl\n }, _a)\n });\n}\nfunction provide(namespace) {\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'registrable-provide',\n methods: {\n register: null,\n unregister: null\n },\n provide: function provide() {\n var _a;\n return _a = {}, _a[namespace] = {\n register: this.register,\n unregister: this.unregister\n }, _a;\n }\n });\n}\n\n/***/ }),\n\n/***/ \"./src/mixins/returnable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/returnable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'returnable',\n props: {\n returnValue: null\n },\n data: function data() {\n return {\n isActive: false,\n originalValue: null\n };\n },\n watch: {\n isActive: function isActive(val) {\n if (val) {\n this.originalValue = this.returnValue;\n } else {\n this.$emit('update:returnValue', this.originalValue);\n }\n }\n },\n methods: {\n save: function save(value) {\n var _this = this;\n this.originalValue = value;\n setTimeout(function () {\n _this.isActive = false;\n });\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/rippleable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/rippleable.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../directives/ripple */ \"./src/directives/ripple.ts\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);\n// Directives\n\n// Types\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_1___default.a.extend({\n name: 'rippleable',\n directives: { Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_0__[\"default\"] },\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true\n }\n },\n methods: {\n genRipple: function genRipple(data) {\n if (data === void 0) {\n data = {};\n }\n if (!this.ripple) return null;\n data.staticClass = 'v-input--selection-controls__ripple';\n data.directives = data.directives || [];\n data.directives.push({\n name: 'ripple',\n value: { center: true }\n });\n data.on = Object.assign({\n click: this.onChange\n }, this.$listeners);\n return this.$createElement('div', data);\n },\n onChange: function onChange() {}\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/routable.ts\":\n/*!********************************!*\\\n !*** ./src/mixins/routable.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _directives_ripple__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../directives/ripple */ \"./src/directives/ripple.ts\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'routable',\n directives: {\n Ripple: _directives_ripple__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean,\n default: undefined\n },\n exactActiveClass: String,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: [Boolean, Object],\n tag: String,\n target: String\n },\n computed: {\n computedRipple: function computedRipple() {\n return this.ripple && !this.disabled ? this.ripple : false;\n }\n },\n methods: {\n click: function click(e) {\n this.$emit('click', e);\n },\n generateRouteLink: function generateRouteLink(classes) {\n var _a;\n var exact = this.exact;\n var tag;\n var data = (_a = {\n attrs: { disabled: this.disabled },\n class: classes,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple\n }]\n }, _a[this.to ? 'nativeOn' : 'on'] = __assign({}, this.$listeners, { click: this.click }), _a);\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' || this.to === Object(this.to) && this.to.path === '/';\n }\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n var activeClass = this.activeClass;\n var exactActiveClass = this.exactActiveClass || activeClass;\n // TODO: apply only in VListTile\n if (this.proxyClass) {\n activeClass += ' ' + this.proxyClass;\n exactActiveClass += ' ' + this.proxyClass;\n }\n tag = this.nuxt ? 'nuxt-link' : 'router-link';\n Object.assign(data.props, {\n to: this.to,\n exact: exact,\n activeClass: activeClass,\n exactActiveClass: exactActiveClass,\n append: this.append,\n replace: this.replace\n });\n } else {\n tag = this.href && 'a' || this.tag || 'a';\n if (tag === 'a' && this.href) data.attrs.href = this.href;\n }\n if (this.target) data.attrs.target = this.target;\n return { tag: tag, data: data };\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/selectable.js\":\n/*!**********************************!*\\\n !*** ./src/mixins/selectable.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_VInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/VInput */ \"./src/components/VInput/index.ts\");\n/* harmony import */ var _rippleable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rippleable */ \"./src/mixins/rippleable.ts\");\n/* harmony import */ var _comparable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./comparable */ \"./src/mixins/comparable.ts\");\n// Components\n\n// Mixins\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (_components_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extend({\n name: 'selectable',\n mixins: [_rippleable__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _comparable__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n model: {\n prop: 'inputValue',\n event: 'change'\n },\n props: {\n color: {\n type: String,\n default: 'accent'\n },\n id: String,\n inputValue: null,\n falseValue: null,\n trueValue: null,\n multiple: {\n type: Boolean,\n default: null\n },\n label: String\n },\n data: function data(vm) {\n return {\n lazyValue: vm.inputValue\n };\n },\n computed: {\n computedColor: function computedColor() {\n return this.isActive ? this.color : this.validationState;\n },\n isMultiple: function isMultiple() {\n return this.multiple === true || this.multiple === null && Array.isArray(this.internalValue);\n },\n isActive: function isActive() {\n var _this = this;\n var value = this.value;\n var input = this.internalValue;\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false;\n return input.some(function (item) {\n return _this.valueComparator(item, value);\n });\n }\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value ? this.valueComparator(value, input) : Boolean(input);\n }\n return this.valueComparator(input, this.trueValue);\n },\n isDirty: function isDirty() {\n return this.isActive;\n }\n },\n watch: {\n inputValue: function inputValue(val) {\n this.lazyValue = val;\n }\n },\n methods: {\n genLabel: function genLabel() {\n if (!this.hasLabel) return null;\n var label = _components_VInput__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.methods.genLabel.call(this);\n label.data.on = { click: this.onChange };\n return label;\n },\n genInput: function genInput(type, attrs) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-label': this.label,\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.id,\n role: type,\n type: type\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown\n },\n ref: 'input'\n });\n },\n onBlur: function onBlur() {\n this.isFocused = false;\n },\n onChange: function onChange() {\n var _this = this;\n if (this.isDisabled) return;\n var value = this.value;\n var input = this.internalValue;\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = [];\n }\n var length = input.length;\n input = input.filter(function (item) {\n return !_this.valueComparator(item, value);\n });\n if (input.length === length) {\n input.push(value);\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue;\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value;\n } else {\n input = !input;\n }\n this.validate(true, input);\n this.internalValue = input;\n },\n onFocus: function onFocus() {\n this.isFocused = true;\n },\n /** @abstract */\n onKeydown: function onKeydown(e) {}\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/sizeable.ts\":\n/*!********************************!*\\\n !*** ./src/mixins/sizeable.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'sizeable',\n props: {\n large: Boolean,\n medium: Boolean,\n size: {\n type: [Number, String]\n },\n small: Boolean,\n xLarge: Boolean\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/ssr-bootable.ts\":\n/*!************************************!*\\\n !*** ./src/mixins/ssr-bootable.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'ssr-bootable',\n data: function data() {\n return {\n isBooted: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(function () {\n _this.$el.setAttribute('data-booted', 'true');\n _this.isBooted = true;\n });\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/stackable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/stackable.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n name: 'stackable',\n data: function data() {\n return {\n stackClass: 'unpecified',\n stackElement: null,\n stackExclude: null,\n stackMinZIndex: 0,\n isActive: false\n };\n },\n computed: {\n activeZIndex: function activeZIndex() {\n if (typeof window === 'undefined') return 0;\n var content = this.stackElement || this.$refs.content;\n // Return current zindex if not active\n var index = !this.isActive ? Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(content) : this.getMaxZIndex(this.stackExclude || [content]) + 2;\n if (index == null) return index;\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index);\n }\n },\n methods: {\n getMaxZIndex: function getMaxZIndex(exclude) {\n if (exclude === void 0) {\n exclude = [];\n }\n var base = this.$el;\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n var zis = [this.stackMinZIndex, Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(base)];\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n var activeElements = __spread(document.getElementsByClassName(this.stackClass));\n // Get z-index for all active dialogs\n for (var index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_1__[\"getZIndex\"])(activeElements[index]));\n }\n }\n return Math.max.apply(Math, __spread(zis));\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/themeable.ts\":\n/*!*********************************!*\\\n !*** ./src/mixins/themeable.ts ***!\n \\*********************************/\n/*! exports provided: functionalThemeClasses, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functionalThemeClasses\", function() { return functionalThemeClasses; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\nfunction functionalThemeClasses(context) {\n var vm = __assign({}, context.props, context.injections);\n var isDark = Themeable.options.computed.isDark.call(vm);\n return Themeable.options.computed.themeClasses.call({ isDark: isDark });\n}\n/* @vue/component */\nvar Themeable = vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend().extend({\n name: 'themeable',\n provide: function provide() {\n return {\n theme: this.themeableProvide\n };\n },\n inject: {\n theme: {\n default: {\n isDark: false\n }\n }\n },\n props: {\n dark: {\n type: Boolean,\n default: null\n },\n light: {\n type: Boolean,\n default: null\n }\n },\n data: function data() {\n return {\n themeableProvide: {\n isDark: false\n }\n };\n },\n computed: {\n isDark: function isDark() {\n if (this.dark === true) {\n // explicitly dark\n return true;\n } else if (this.light === true) {\n // explicitly light\n return false;\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark;\n }\n },\n themeClasses: function themeClasses() {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark\n };\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark: function rootIsDark() {\n if (this.dark === true) {\n // explicitly dark\n return true;\n } else if (this.light === true) {\n // explicitly light\n return false;\n } else {\n // inherit from v-app\n return this.$vuetify.dark;\n }\n },\n rootThemeClasses: function rootThemeClasses() {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark\n };\n }\n },\n watch: {\n isDark: {\n handler: function handler(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark;\n }\n },\n immediate: true\n }\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Themeable);\n\n/***/ }),\n\n/***/ \"./src/mixins/toggleable.ts\":\n/*!**********************************!*\\\n !*** ./src/mixins/toggleable.ts ***!\n \\**********************************/\n/*! exports provided: factory, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"factory\", function() { return factory; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction factory(prop, event) {\n if (prop === void 0) {\n prop = 'value';\n }\n if (event === void 0) {\n event = 'input';\n }\n var _a, _b;\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'toggleable',\n model: { prop: prop, event: event },\n props: (_a = {}, _a[prop] = { required: false }, _a),\n data: function data() {\n return {\n isActive: !!this[prop]\n };\n },\n watch: (_b = {}, _b[prop] = function (val) {\n this.isActive = !!val;\n }, _b.isActive = function (val) {\n !!val !== this[prop] && this.$emit(event, val);\n }, _b)\n });\n}\n/* eslint-disable-next-line no-redeclare */\nvar Toggleable = factory();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Toggleable);\n\n/***/ }),\n\n/***/ \"./src/mixins/transitionable.ts\":\n/*!**************************************!*\\\n !*** ./src/mixins/transitionable.ts ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'transitionable',\n props: {\n mode: String,\n origin: String,\n transition: String\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/translatable.ts\":\n/*!************************************!*\\\n !*** ./src/mixins/translatable.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: 'translatable',\n props: {\n height: Number\n },\n data: function data() {\n return {\n elOffsetTop: 0,\n parallax: 0,\n parallaxDist: 0,\n percentScrolled: 0,\n scrollTop: 0,\n windowHeight: 0,\n windowBottom: 0\n };\n },\n computed: {\n imgHeight: function imgHeight() {\n return this.objHeight();\n }\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('scroll', this.translate, false);\n window.removeEventListener('resize', this.translate, false);\n },\n methods: {\n calcDimensions: function calcDimensions() {\n var offset = this.$el.getBoundingClientRect();\n this.scrollTop = window.pageYOffset;\n this.parallaxDist = this.imgHeight - this.height;\n this.elOffsetTop = offset.top + this.scrollTop;\n this.windowHeight = window.innerHeight;\n this.windowBottom = this.scrollTop + this.windowHeight;\n },\n listeners: function listeners() {\n window.addEventListener('scroll', this.translate, false);\n window.addEventListener('resize', this.translate, false);\n },\n /** @abstract **/\n objHeight: function objHeight() {\n throw new Error('Not implemented !');\n },\n translate: function translate() {\n this.calcDimensions();\n this.percentScrolled = (this.windowBottom - this.elOffsetTop) / (parseInt(this.height) + this.windowHeight);\n this.parallax = Math.round(this.parallaxDist * this.percentScrolled);\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/mixins/validatable.ts\":\n/*!***********************************!*\\\n !*** ./src/mixins/validatable.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colorable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colorable */ \"./src/mixins/colorable.ts\");\n/* harmony import */ var _registrable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registrable */ \"./src/mixins/registrable.ts\");\n/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/helpers */ \"./src/util/helpers.ts\");\n/* harmony import */ var _util_console__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/console */ \"./src/util/console.ts\");\n/* harmony import */ var _util_mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/mixins */ \"./src/util/mixins.ts\");\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n// Mixins\n\n\n// Utilities\n\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_util_mixins__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_colorable__WEBPACK_IMPORTED_MODULE_0__[\"default\"], Object(_registrable__WEBPACK_IMPORTED_MODULE_1__[\"inject\"])('form')).extend({\n name: 'validatable',\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1\n },\n errorMessages: {\n type: [String, Array],\n default: function _default() {\n return [];\n }\n },\n messages: {\n type: [String, Array],\n default: function _default() {\n return [];\n }\n },\n readonly: Boolean,\n rules: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: function _default() {\n return [];\n }\n },\n validateOnBlur: Boolean,\n value: { required: false }\n },\n data: function data() {\n return {\n errorBucket: [],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false\n };\n },\n computed: {\n hasError: function hasError() {\n return this.internalErrorMessages.length > 0 || this.errorBucket.length > 0 || this.error;\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess: function hasSuccess() {\n return this.internalSuccessMessages.length > 0 || this.success;\n },\n externalError: function externalError() {\n return this.internalErrorMessages.length > 0 || this.error;\n },\n hasMessages: function hasMessages() {\n return this.validationTarget.length > 0;\n },\n hasState: function hasState() {\n return this.hasSuccess || this.shouldValidate && this.hasError;\n },\n internalErrorMessages: function internalErrorMessages() {\n return this.genInternalMessages(this.errorMessages);\n },\n internalMessages: function internalMessages() {\n return this.genInternalMessages(this.messages);\n },\n internalSuccessMessages: function internalSuccessMessages() {\n return this.genInternalMessages(this.successMessages);\n },\n internalValue: {\n get: function get() {\n return this.lazyValue;\n },\n set: function set(val) {\n this.lazyValue = val;\n this.$emit('input', val);\n }\n },\n shouldValidate: function shouldValidate() {\n if (this.externalError) return true;\n if (this.isResetting) return false;\n return this.validateOnBlur ? this.hasFocused && !this.isFocused : this.hasInput || this.hasFocused;\n },\n validations: function validations() {\n return this.validationTarget.slice(0, Number(this.errorCount));\n },\n validationState: function validationState() {\n if (this.hasError && this.shouldValidate) return 'error';\n if (this.hasSuccess) return 'success';\n if (this.hasColor) return this.color;\n return undefined;\n },\n validationTarget: function validationTarget() {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages;\n } else if (this.successMessages.length > 0) {\n return this.internalSuccessMessages;\n } else if (this.messages.length > 0) {\n return this.internalMessages;\n } else if (this.shouldValidate) {\n return this.errorBucket;\n } else return [];\n }\n },\n watch: {\n rules: {\n handler: function handler(newVal, oldVal) {\n if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__[\"deepEqual\"])(newVal, oldVal)) return;\n this.validate();\n },\n deep: true\n },\n internalValue: function internalValue() {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true;\n this.validateOnBlur || this.$nextTick(this.validate);\n },\n isFocused: function isFocused(val) {\n // Should not check validation\n // if disabled or readonly\n if (!val && !this.disabled && !this.readonly) {\n this.hasFocused = true;\n this.validateOnBlur && this.validate();\n }\n },\n isResetting: function isResetting() {\n var _this = this;\n setTimeout(function () {\n _this.hasInput = false;\n _this.hasFocused = false;\n _this.isResetting = false;\n _this.validate();\n }, 0);\n },\n hasError: function hasError(val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val);\n }\n },\n value: function value(val) {\n this.lazyValue = val;\n }\n },\n beforeMount: function beforeMount() {\n this.validate();\n },\n created: function created() {\n this.form && this.form.register(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.form && this.form.unregister(this);\n },\n methods: {\n genInternalMessages: function genInternalMessages(messages) {\n if (!messages) return [];else if (Array.isArray(messages)) return messages;else return [messages];\n },\n /** @public */\n reset: function reset() {\n this.isResetting = true;\n this.internalValue = Array.isArray(this.internalValue) ? [] : undefined;\n },\n /** @public */\n resetValidation: function resetValidation() {\n this.isResetting = true;\n },\n /** @public */\n validate: function validate(force, value) {\n if (force === void 0) {\n force = false;\n }\n var errorBucket = [];\n value = value || this.internalValue;\n if (force) this.hasInput = this.hasFocused = true;\n for (var index = 0; index < this.rules.length; index++) {\n var rule = this.rules[index];\n var valid = typeof rule === 'function' ? rule(value) : rule;\n if (typeof valid === 'string') {\n errorBucket.push(valid);\n } else if (typeof valid !== 'boolean') {\n Object(_util_console__WEBPACK_IMPORTED_MODULE_3__[\"consoleError\"])(\"Rules should return a string or boolean, received '\" + (typeof valid === 'undefined' ? 'undefined' : _typeof(valid)) + \"' instead\", this);\n }\n }\n this.errorBucket = errorBucket;\n this.valid = errorBucket.length === 0;\n return this.valid;\n }\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/stylus/app.styl\":\n/*!*****************************!*\\\n !*** ./src/stylus/app.styl ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_alerts.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_alerts.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_app.styl\":\n/*!*****************************************!*\\\n !*** ./src/stylus/components/_app.styl ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_autocompletes.styl\":\n/*!***************************************************!*\\\n !*** ./src/stylus/components/_autocompletes.styl ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_avatars.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_avatars.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_badges.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_badges.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_bottom-navs.styl\":\n/*!*************************************************!*\\\n !*** ./src/stylus/components/_bottom-navs.styl ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_bottom-sheets.styl\":\n/*!***************************************************!*\\\n !*** ./src/stylus/components/_bottom-sheets.styl ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_breadcrumbs.styl\":\n/*!*************************************************!*\\\n !*** ./src/stylus/components/_breadcrumbs.styl ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_button-toggle.styl\":\n/*!***************************************************!*\\\n !*** ./src/stylus/components/_button-toggle.styl ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_buttons.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_buttons.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_calendar-daily.styl\":\n/*!****************************************************!*\\\n !*** ./src/stylus/components/_calendar-daily.styl ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_calendar-weekly.styl\":\n/*!*****************************************************!*\\\n !*** ./src/stylus/components/_calendar-weekly.styl ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_cards.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_cards.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_carousel.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_carousel.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_chips.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_chips.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_content.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_content.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_counters.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_counters.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_data-iterator.styl\":\n/*!***************************************************!*\\\n !*** ./src/stylus/components/_data-iterator.styl ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_data-table.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_data-table.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_date-picker-header.styl\":\n/*!********************************************************!*\\\n !*** ./src/stylus/components/_date-picker-header.styl ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_date-picker-table.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_date-picker-table.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_date-picker-title.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_date-picker-title.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_date-picker-years.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_date-picker-years.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_dialogs.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_dialogs.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_dividers.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_dividers.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_expansion-panel.styl\":\n/*!*****************************************************!*\\\n !*** ./src/stylus/components/_expansion-panel.styl ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_footer.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_footer.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_forms.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_forms.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_grid.styl\":\n/*!******************************************!*\\\n !*** ./src/stylus/components/_grid.styl ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_icons.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_icons.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_images.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_images.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_inputs.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_inputs.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_item-group.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_item-group.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_jumbotrons.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_jumbotrons.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_labels.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_labels.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_lists.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_lists.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_menus.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_menus.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_messages.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_messages.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_navigation-drawer.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_navigation-drawer.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_overflow-buttons.styl\":\n/*!******************************************************!*\\\n !*** ./src/stylus/components/_overflow-buttons.styl ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_overlay.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_overlay.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_pagination.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_pagination.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_parallax.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_parallax.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_pickers.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_pickers.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_progress-circular.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_progress-circular.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_progress-linear.styl\":\n/*!*****************************************************!*\\\n !*** ./src/stylus/components/_progress-linear.styl ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_radio-group.styl\":\n/*!*************************************************!*\\\n !*** ./src/stylus/components/_radio-group.styl ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_radios.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_radios.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_range-sliders.styl\":\n/*!***************************************************!*\\\n !*** ./src/stylus/components/_range-sliders.styl ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_rating.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_rating.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_responsive.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_responsive.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_select.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_select.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_selection-controls.styl\":\n/*!********************************************************!*\\\n !*** ./src/stylus/components/_selection-controls.styl ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_sheet.styl\":\n/*!*******************************************!*\\\n !*** ./src/stylus/components/_sheet.styl ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_sliders.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_sliders.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_small-dialog.styl\":\n/*!**************************************************!*\\\n !*** ./src/stylus/components/_small-dialog.styl ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_snackbars.styl\":\n/*!***********************************************!*\\\n !*** ./src/stylus/components/_snackbars.styl ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_speed-dial.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_speed-dial.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_steppers.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_steppers.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_subheaders.styl\":\n/*!************************************************!*\\\n !*** ./src/stylus/components/_subheaders.styl ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_switch.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_switch.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_system-bars.styl\":\n/*!*************************************************!*\\\n !*** ./src/stylus/components/_system-bars.styl ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_tables.styl\":\n/*!********************************************!*\\\n !*** ./src/stylus/components/_tables.styl ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_tabs.styl\":\n/*!******************************************!*\\\n !*** ./src/stylus/components/_tabs.styl ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_text-fields.styl\":\n/*!*************************************************!*\\\n !*** ./src/stylus/components/_text-fields.styl ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_textarea.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_textarea.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_time-picker-clock.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_time-picker-clock.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_time-picker-title.styl\":\n/*!*******************************************************!*\\\n !*** ./src/stylus/components/_time-picker-title.styl ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_timeline.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_timeline.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_toolbar.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_toolbar.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_tooltips.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_tooltips.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_treeview.styl\":\n/*!**********************************************!*\\\n !*** ./src/stylus/components/_treeview.styl ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/stylus/components/_windows.styl\":\n/*!*********************************************!*\\\n !*** ./src/stylus/components/_windows.styl ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./src/util/ThemeProvider.ts\":\n/*!***********************************!*\\\n !*** ./src/util/ThemeProvider.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../mixins/themeable */ \"./src/mixins/themeable.ts\");\n/* harmony import */ var _mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mixins */ \"./src/util/mixins.ts\");\n\n\n/* @vue/component */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_mixins__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]).extend({\n name: 'theme-provider',\n props: {\n root: Boolean\n },\n computed: {\n isDark: function isDark() {\n return this.root ? this.rootIsDark : _mixins_themeable__WEBPACK_IMPORTED_MODULE_0__[\"default\"].options.computed.isDark.call(this);\n }\n },\n render: function render() {\n return this.$slots.default && this.$slots.default.find(function (node) {\n return !node.isComment && node.text !== ' ';\n });\n }\n}));\n\n/***/ }),\n\n/***/ \"./src/util/color/transformCIELAB.ts\":\n/*!*******************************************!*\\\n !*** ./src/util/color/transformCIELAB.ts ***!\n \\*******************************************/\n/*! exports provided: fromXYZ, toXYZ */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXYZ\", function() { return fromXYZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toXYZ\", function() { return toXYZ; });\nvar delta = 0.20689655172413793; // 6÷29\nvar cielabForwardTransform = function cielabForwardTransform(t) {\n return t > Math.pow(delta, 3) ? Math.cbrt(t) : t / (3 * Math.pow(delta, 2)) + 4 / 29;\n};\nvar cielabReverseTransform = function cielabReverseTransform(t) {\n return t > delta ? Math.pow(t, 3) : 3 * Math.pow(delta, 2) * (t - 4 / 29);\n};\nfunction fromXYZ(xyz) {\n var transform = cielabForwardTransform;\n var transformedY = transform(xyz[1]);\n return [116 * transformedY - 16, 500 * (transform(xyz[0] / 0.95047) - transformedY), 200 * (transformedY - transform(xyz[2] / 1.08883))];\n}\nfunction toXYZ(lab) {\n var transform = cielabReverseTransform;\n var Ln = (lab[0] + 16) / 116;\n return [transform(Ln + lab[1] / 500) * 0.95047, transform(Ln), transform(Ln - lab[2] / 200) * 1.08883];\n}\n\n/***/ }),\n\n/***/ \"./src/util/color/transformSRGB.ts\":\n/*!*****************************************!*\\\n !*** ./src/util/color/transformSRGB.ts ***!\n \\*****************************************/\n/*! exports provided: fromXYZ, toXYZ */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXYZ\", function() { return fromXYZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toXYZ\", function() { return toXYZ; });\n// For converting XYZ to sRGB\nvar srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]];\n// Forward gamma adjust\nvar srgbForwardTransform = function srgbForwardTransform(C) {\n return C <= 0.0031308 ? C * 12.92 : 1.055 * Math.pow(C, 1 / 2.4) - 0.055;\n};\n// For converting sRGB to XYZ\nvar srgbReverseMatrix = [[0.4124, 0.3576, 0.1805], [0.2126, 0.7152, 0.0722], [0.0193, 0.1192, 0.9505]];\n// Reverse gamma adjust\nvar srgbReverseTransform = function srgbReverseTransform(C) {\n return C <= 0.04045 ? C / 12.92 : Math.pow((C + 0.055) / 1.055, 2.4);\n};\nfunction clamp(value) {\n return Math.max(0, Math.min(1, value));\n}\nfunction fromXYZ(xyz) {\n var rgb = Array(3);\n var transform = srgbForwardTransform;\n var matrix = srgbForwardMatrix;\n // Matrix transform, then gamma adjustment\n for (var i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);\n }\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0);\n}\nfunction toXYZ(rgb) {\n var xyz = [0, 0, 0];\n var transform = srgbReverseTransform;\n var matrix = srgbReverseMatrix;\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n var r = transform((rgb >> 16 & 0xff) / 255);\n var g = transform((rgb >> 8 & 0xff) / 255);\n var b = transform((rgb >> 0 & 0xff) / 255);\n // Matrix color space transform\n for (var i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b;\n }\n return xyz;\n}\n\n/***/ }),\n\n/***/ \"./src/util/colorUtils.ts\":\n/*!********************************!*\\\n !*** ./src/util/colorUtils.ts ***!\n \\********************************/\n/*! exports provided: colorToInt, intToHex, colorToHex */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorToInt\", function() { return colorToInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intToHex\", function() { return intToHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorToHex\", function() { return colorToHex; });\n/* harmony import */ var _console__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./console */ \"./src/util/console.ts\");\n\nfunction colorToInt(color) {\n var rgb;\n if (typeof color === 'number') {\n rgb = color;\n } else if (typeof color === 'string') {\n var c = color[0] === '#' ? color.substring(1) : color;\n if (c.length === 3) {\n c = c.split('').map(function (char) {\n return char + char;\n }).join('');\n }\n if (c.length !== 6) {\n Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"'\" + color + \"' is not a valid rgb color\");\n }\n rgb = parseInt(c, 16);\n } else {\n throw new TypeError(\"Colors can only be numbers or strings, recieved \" + (color == null ? color : color.constructor.name) + \" instead\");\n }\n if (rgb < 0) {\n Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"Colors cannot be negative: '\" + color + \"'\");\n rgb = 0;\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n Object(_console__WEBPACK_IMPORTED_MODULE_0__[\"consoleWarn\"])(\"'\" + color + \"' is not a valid rgb color\");\n rgb = 0xffffff;\n }\n return rgb;\n}\nfunction intToHex(color) {\n var hexColor = color.toString(16);\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor;\n return '#' + hexColor;\n}\nfunction colorToHex(color) {\n return intToHex(colorToInt(color));\n}\n\n/***/ }),\n\n/***/ \"./src/util/console.ts\":\n/*!*****************************!*\\\n !*** ./src/util/console.ts ***!\n \\*****************************/\n/*! exports provided: consoleInfo, consoleWarn, consoleError, deprecate */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleInfo\", function() { return consoleInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleWarn\", function() { return consoleWarn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"consoleError\", function() { return consoleError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deprecate\", function() { return deprecate; });\nfunction createMessage(message, vm, parent) {\n if (parent) {\n vm = {\n _isVue: true,\n $parent: parent,\n $options: vm\n };\n }\n if (vm) {\n // Only show each message once per instance\n vm.$_alreadyWarned = vm.$_alreadyWarned || [];\n if (vm.$_alreadyWarned.includes(message)) return;\n vm.$_alreadyWarned.push(message);\n }\n return \"[Vuetify] \" + message + (vm ? generateComponentTrace(vm) : '');\n}\nfunction consoleInfo(message, vm, parent) {\n var newMessage = createMessage(message, vm, parent);\n newMessage != null && console.info(newMessage);\n}\nfunction consoleWarn(message, vm, parent) {\n var newMessage = createMessage(message, vm, parent);\n newMessage != null && console.warn(newMessage);\n}\nfunction consoleError(message, vm, parent) {\n var newMessage = createMessage(message, vm, parent);\n newMessage != null && console.error(newMessage);\n}\nfunction deprecate(original, replacement, vm, parent) {\n consoleWarn(\"'\" + original + \"' is deprecated, use '\" + replacement + \"' instead\", vm, parent);\n}\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\nvar classifyRE = /(?:^|[-_])(\\w)/g;\nvar classify = function classify(str) {\n return str.replace(classifyRE, function (c) {\n return c.toUpperCase();\n }).replace(/[-_]/g, '');\n};\nfunction formatComponentName(vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>';\n }\n var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n return (name ? \"<\" + classify(name) + \">\" : \"<Anonymous>\") + (file && includeFile !== false ? \" at \" + file : '');\n}\nfunction generateComponentTrace(vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue;\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree.map(function (vm, i) {\n return \"\" + (i === 0 ? '---> ' : ' '.repeat(5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\" : formatComponentName(vm));\n }).join('\\n');\n } else {\n return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n }\n}\n\n/***/ }),\n\n/***/ \"./src/util/dedupeModelListeners.ts\":\n/*!******************************************!*\\\n !*** ./src/util/dedupeModelListeners.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dedupeModelListeners; });\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nfunction dedupeModelListeners(data) {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n var i = data.on.input.indexOf(data.model.callback);\n if (i > -1) data.on.input.splice(i, 1);\n } else {\n delete data.on.input;\n }\n }\n}\n\n/***/ }),\n\n/***/ \"./src/util/helpers.ts\":\n/*!*****************************!*\\\n !*** ./src/util/helpers.ts ***!\n \\*****************************/\n/*! exports provided: createSimpleFunctional, createSimpleTransition, createJavaScriptTransition, directiveConfig, addOnceEventListener, passiveSupported, addPassiveEventListener, getNestedValue, deepEqual, getObjectValueByPath, getPropertyFromItem, createRange, getZIndex, escapeHTML, filterObjectOnKeys, filterChildren, convertToUnit, kebabCase, isObject, keyCodes, remapInternalIcon, keys, camelize, arrayDiff, upperFirst, getSlotType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSimpleFunctional\", function() { return createSimpleFunctional; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSimpleTransition\", function() { return createSimpleTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createJavaScriptTransition\", function() { return createJavaScriptTransition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"directiveConfig\", function() { return directiveConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addOnceEventListener\", function() { return addOnceEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"passiveSupported\", function() { return passiveSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPassiveEventListener\", function() { return addPassiveEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNestedValue\", function() { return getNestedValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deepEqual\", function() { return deepEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getObjectValueByPath\", function() { return getObjectValueByPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPropertyFromItem\", function() { return getPropertyFromItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRange\", function() { return createRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getZIndex\", function() { return getZIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHTML\", function() { return escapeHTML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterObjectOnKeys\", function() { return filterObjectOnKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterChildren\", function() { return filterChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToUnit\", function() { return convertToUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kebabCase\", function() { return kebabCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyCodes\", function() { return keyCodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remapInternalIcon\", function() { return remapInternalIcon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return keys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayDiff\", function() { return arrayDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return upperFirst; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSlotType\", function() { return getSlotType; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\nfunction createSimpleFunctional(c, el, name) {\n if (el === void 0) {\n el = 'div';\n }\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({\n name: name || c.replace(/__/g, '-'),\n functional: true,\n render: function render(h, _a) {\n var data = _a.data,\n children = _a.children;\n data.staticClass = (c + \" \" + (data.staticClass || '')).trim();\n return h(el, data, children);\n }\n });\n}\nfunction mergeTransitions(transitions, array) {\n if (Array.isArray(transitions)) return transitions.concat(array);\n if (transitions) array.push(transitions);\n return array;\n}\nfunction createSimpleTransition(name, origin, mode) {\n if (origin === void 0) {\n origin = 'top center 0';\n }\n return {\n name: name,\n functional: true,\n props: {\n group: {\n type: Boolean,\n default: false\n },\n hideOnLeave: {\n type: Boolean,\n default: false\n },\n leaveAbsolute: {\n type: Boolean,\n default: false\n },\n mode: {\n type: String,\n default: mode\n },\n origin: {\n type: String,\n default: origin\n }\n },\n render: function render(h, context) {\n var tag = \"transition\" + (context.props.group ? '-group' : '');\n context.data = context.data || {};\n context.data.props = {\n name: name,\n mode: context.props.mode\n };\n context.data.on = context.data.on || {};\n if (!Object.isExtensible(context.data.on)) {\n context.data.on = __assign({}, context.data.on);\n }\n var ourBeforeEnter = [];\n var ourLeave = [];\n var absolute = function absolute(el) {\n return el.style.position = 'absolute';\n };\n ourBeforeEnter.push(function (el) {\n el.style.transformOrigin = context.props.origin;\n el.style.webkitTransformOrigin = context.props.origin;\n });\n if (context.props.leaveAbsolute) ourLeave.push(absolute);\n if (context.props.hideOnLeave) {\n ourLeave.push(function (el) {\n return el.style.display = 'none';\n });\n }\n var _a = context.data.on,\n beforeEnter = _a.beforeEnter,\n leave = _a.leave;\n // Type says Function | Function[] but\n // will only work if provided a function\n context.data.on.beforeEnter = function () {\n return mergeTransitions(beforeEnter, ourBeforeEnter);\n };\n context.data.on.leave = mergeTransitions(leave, ourLeave);\n return h(tag, context.data, context.children);\n }\n };\n}\nfunction createJavaScriptTransition(name, functions, mode) {\n if (mode === void 0) {\n mode = 'in-out';\n }\n return {\n name: name,\n functional: true,\n props: {\n mode: {\n type: String,\n default: mode\n }\n },\n render: function render(h, context) {\n var data = {\n props: __assign({}, context.props, { name: name }),\n on: functions\n };\n return h('transition', data, context.children);\n }\n };\n}\nfunction directiveConfig(binding, defaults) {\n if (defaults === void 0) {\n defaults = {};\n }\n return __assign({}, defaults, binding.modifiers, { value: binding.arg }, binding.value || {});\n}\nfunction addOnceEventListener(el, event, cb) {\n var once = function once() {\n cb();\n el.removeEventListener(event, once, false);\n };\n el.addEventListener(event, once, false);\n}\nvar passiveSupported = false;\ntry {\n if (typeof window !== 'undefined') {\n var testListenerOpts = Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveSupported = true;\n }\n });\n window.addEventListener('testListener', testListenerOpts, testListenerOpts);\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts);\n }\n} catch (e) {\n console.warn(e);\n}\n\nfunction addPassiveEventListener(el, event, cb, options) {\n el.addEventListener(event, cb, passiveSupported ? options : false);\n}\nfunction getNestedValue(obj, path, fallback) {\n var last = path.length - 1;\n if (last < 0) return obj === undefined ? fallback : obj;\n for (var i = 0; i < last; i++) {\n if (obj == null) {\n return fallback;\n }\n obj = obj[path[i]];\n }\n if (obj == null) return fallback;\n return obj[path[last]] === undefined ? fallback : obj[path[last]];\n}\nfunction deepEqual(a, b) {\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date) {\n // If the values are Date, they were convert to timestamp with getTime and compare it\n if (a.getTime() !== b.getTime()) return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n var props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n return props.every(function (p) {\n return deepEqual(a[p], b[p]);\n });\n}\nfunction getObjectValueByPath(obj, path, fallback) {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (!path || path.constructor !== String) return fallback;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback);\n}\nfunction getPropertyFromItem(item, property, fallback) {\n if (property == null) return item === undefined ? fallback : item;\n if (item !== Object(item)) return fallback === undefined ? item : fallback;\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback);\n if (Array.isArray(property)) return getNestedValue(item, property, fallback);\n if (typeof property !== 'function') return fallback;\n var value = property(item, fallback);\n return typeof value === 'undefined' ? fallback : value;\n}\nfunction createRange(length) {\n return Array.from({ length: length }, function (v, k) {\n return k;\n });\n}\nfunction getZIndex(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\n var index = +window.getComputedStyle(el).getPropertyValue('z-index');\n if (!index) return getZIndex(el.parentNode);\n return index;\n}\nvar tagsToReplace = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;'\n};\nfunction escapeHTML(str) {\n return str.replace(/[&<>]/g, function (tag) {\n return tagsToReplace[tag] || tag;\n });\n}\nfunction filterObjectOnKeys(obj, keys) {\n var filtered = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key];\n }\n }\n return filtered;\n}\nfunction filterChildren(array, tag) {\n if (array === void 0) {\n array = [];\n }\n return array.filter(function (child) {\n return child.componentOptions && child.componentOptions.Ctor.options.name === tag;\n });\n}\nfunction convertToUnit(str, unit) {\n if (unit === void 0) {\n unit = 'px';\n }\n if (str == null || str === '') {\n return undefined;\n } else if (isNaN(+str)) {\n return String(str);\n } else {\n return \"\" + Number(str) + unit;\n }\n}\nfunction kebabCase(str) {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction isObject(obj) {\n return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n}\n// KeyboardEvent.keyCode aliases\nvar keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34\n});\nvar ICONS_PREFIX = '$vuetify.icons.';\n// This remaps internal names like '$vuetify.icons.cancel'\n// to the current name or component for that icon.\nfunction remapInternalIcon(vm, iconName) {\n if (!iconName.startsWith(ICONS_PREFIX)) {\n return iconName;\n }\n // Now look up icon indirection name, e.g. '$vuetify.icons.cancel'\n return getObjectValueByPath(vm, iconName, iconName);\n}\nfunction keys(o) {\n return Object.keys(o);\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = function camelize(str) {\n return str.replace(camelizeRE, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n};\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nfunction arrayDiff(a, b) {\n var diff = [];\n for (var i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i]);\n }\n return diff;\n}\n/**\n * Makes the first character of a string uppercase\n */\nfunction upperFirst(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n/**\n * Returns:\n * - 'normal' for old style slots - `<template slot=\"default\">`\n * - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nfunction getSlotType(vm, name, split) {\n if (vm.$slots[name] && vm.$scopedSlots[name] && vm.$scopedSlots[name].name) {\n return split ? 'v-slot' : 'scoped';\n }\n if (vm.$slots[name]) return 'normal';\n if (vm.$scopedSlots[name]) return 'scoped';\n}\n\n/***/ }),\n\n/***/ \"./src/util/mask.ts\":\n/*!**************************!*\\\n !*** ./src/util/mask.ts ***!\n \\**************************/\n/*! exports provided: defaultDelimiters, isMaskDelimiter, maskText, unmaskText */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultDelimiters\", function() { return defaultDelimiters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMaskDelimiter\", function() { return isMaskDelimiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"maskText\", function() { return maskText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unmaskText\", function() { return unmaskText; });\nvar defaultDelimiters = /[-!$%^&*()_+|~=`{}[\\]:\";'<>?,./\\\\ ]/;\nvar isMaskDelimiter = function isMaskDelimiter(char) {\n return char ? defaultDelimiters.test(char) : false;\n};\nvar allowedMasks = {\n '#': {\n test: function test(char) {\n return (/[0-9]/.test(char)\n );\n }\n },\n 'A': {\n test: function test(char) {\n return (/[A-Z]/i.test(char)\n );\n },\n convert: function convert(char) {\n return char.toUpperCase();\n }\n },\n 'a': {\n test: function test(char) {\n return (/[a-z]/i.test(char)\n );\n },\n convert: function convert(char) {\n return char.toLowerCase();\n }\n },\n 'N': {\n test: function test(char) {\n return (/[0-9A-Z]/i.test(char)\n );\n },\n convert: function convert(char) {\n return char.toUpperCase();\n }\n },\n 'n': {\n test: function test(char) {\n return (/[0-9a-z]/i.test(char)\n );\n },\n convert: function convert(char) {\n return char.toLowerCase();\n }\n },\n 'X': {\n test: isMaskDelimiter\n }\n};\nvar isMask = function isMask(char) {\n return allowedMasks.hasOwnProperty(char);\n};\nvar convert = function convert(mask, char) {\n return allowedMasks[mask].convert ? allowedMasks[mask].convert(char) : char;\n};\nvar maskValidates = function maskValidates(mask, char) {\n if (char == null || !isMask(mask)) return false;\n return allowedMasks[mask].test(char);\n};\nvar maskText = function maskText(text, masked, dontFillMaskBlanks) {\n if (text == null) return '';\n text = String(text);\n if (!masked.length || !text.length) return text;\n if (!Array.isArray(masked)) masked = masked.split('');\n var textIndex = 0;\n var maskIndex = 0;\n var newText = '';\n while (maskIndex < masked.length) {\n var mask = masked[maskIndex];\n // Assign the next character\n var char = text[textIndex];\n // Check if mask is delimiter\n // and current char matches\n if (!isMask(mask) && char === mask) {\n newText += mask;\n textIndex++;\n // Check if not mask\n } else if (!isMask(mask) && !dontFillMaskBlanks) {\n newText += mask;\n // Check if is mask and validates\n } else if (maskValidates(mask, char)) {\n newText += convert(mask, char);\n textIndex++;\n } else {\n return newText;\n }\n maskIndex++;\n }\n return newText;\n};\nvar unmaskText = function unmaskText(text) {\n return text ? String(text).replace(new RegExp(defaultDelimiters.source, 'g'), '') : text;\n};\n\n/***/ }),\n\n/***/ \"./src/util/mixins.ts\":\n/*!****************************!*\\\n !*** ./src/util/mixins.ts ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mixins; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/* eslint-disable max-len, import/export, no-use-before-define */\n\nfunction mixins() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return vue__WEBPACK_IMPORTED_MODULE_0___default.a.extend({ mixins: args });\n}\n\n/***/ }),\n\n/***/ \"./src/util/rebuildFunctionalSlots.ts\":\n/*!********************************************!*\\\n !*** ./src/util/rebuildFunctionalSlots.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rebuildFunctionalSlots; });\nfunction rebuildFunctionalSlots(slots, h) {\n var children = [];\n for (var slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot: slot }, slots[slot]));\n }\n }\n return children;\n}\n\n/***/ }),\n\n/***/ \"./src/util/theme.ts\":\n/*!***************************!*\\\n !*** ./src/util/theme.ts ***!\n \\***************************/\n/*! exports provided: parse, genStyles, genVariations */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genStyles\", function() { return genStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genVariations\", function() { return genVariations; });\n/* harmony import */ var _colorUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colorUtils */ \"./src/util/colorUtils.ts\");\n/* harmony import */ var _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color/transformSRGB */ \"./src/util/color/transformSRGB.ts\");\n/* harmony import */ var _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./color/transformCIELAB */ \"./src/util/color/transformCIELAB.ts\");\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n\n\n\nfunction parse(theme, isItem) {\n if (isItem === void 0) {\n isItem = false;\n }\n var colors = Object.keys(theme);\n var parsedTheme = {};\n for (var i = 0; i < colors.length; ++i) {\n var name = colors[i];\n var value = theme[name];\n if (isItem) {\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"colorToHex\"])(value);\n }\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === 'object') {\n parsedTheme[name] = parse(value, true);\n } else {\n parsedTheme[name] = genVariations(name, Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"colorToInt\"])(value));\n }\n }\n return parsedTheme;\n}\n/**\n * Generate the CSS for a base color (.primary)\n */\nvar genBaseColor = function genBaseColor(name, value) {\n return \"\\n.\" + name + \" {\\n background-color: \" + value + \" !important;\\n border-color: \" + value + \" !important;\\n}\\n.\" + name + \"--text {\\n color: \" + value + \" !important;\\n caret-color: \" + value + \" !important;\\n}\";\n};\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nvar genVariantColor = function genVariantColor(name, variant, value) {\n var _a = __read(variant.split(/(\\d)/, 2), 2),\n type = _a[0],\n n = _a[1];\n return \"\\n.\" + name + \".\" + type + \"-\" + n + \" {\\n background-color: \" + value + \" !important;\\n border-color: \" + value + \" !important;\\n}\\n.\" + name + \"--text.text--\" + type + \"-\" + n + \" {\\n color: \" + value + \" !important;\\n caret-color: \" + value + \" !important;\\n}\";\n};\nvar genColorVariableName = function genColorVariableName(name, variant) {\n if (variant === void 0) {\n variant = 'base';\n }\n return \"--v-\" + name + \"-\" + variant;\n};\nvar genColorVariable = function genColorVariable(name, variant) {\n if (variant === void 0) {\n variant = 'base';\n }\n return \"var(\" + genColorVariableName(name, variant) + \")\";\n};\nfunction genStyles(theme, cssVar) {\n if (cssVar === void 0) {\n cssVar = false;\n }\n var colors = Object.keys(theme);\n if (!colors.length) return '';\n var variablesCss = '';\n var css = '';\n var aColor = cssVar ? genColorVariable('primary') : theme.primary.base;\n css += \"a { color: \" + aColor + \"; }\";\n for (var i = 0; i < colors.length; ++i) {\n var name = colors[i];\n var value = theme[name];\n if ((typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) !== 'object') continue;\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base);\n cssVar && (variablesCss += \" \" + genColorVariableName(name) + \": \" + value.base + \";\\n\");\n var variants = Object.keys(value);\n for (var i_1 = 0; i_1 < variants.length; ++i_1) {\n var variant = variants[i_1];\n var variantValue = value[variant];\n if (variant === 'base') continue;\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue);\n cssVar && (variablesCss += \" \" + genColorVariableName(name, variant) + \": \" + variantValue + \";\\n\");\n }\n }\n if (cssVar) {\n variablesCss = \":root {\\n\" + variablesCss + \"}\\n\\n\";\n }\n return variablesCss + css;\n}\nfunction genVariations(name, value) {\n var values = {\n base: Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"intToHex\"])(value)\n };\n for (var i = 5; i > 0; --i) {\n values[\"lighten\" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"intToHex\"])(lighten(value, i));\n }\n for (var i = 1; i <= 4; ++i) {\n values[\"darken\" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__[\"intToHex\"])(darken(value, i));\n }\n return values;\n}\nfunction lighten(value, amount) {\n var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__[\"fromXYZ\"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__[\"toXYZ\"](value));\n lab[0] = lab[0] + amount * 10;\n return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__[\"fromXYZ\"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"](lab));\n}\nfunction darken(value, amount) {\n var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__[\"fromXYZ\"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__[\"toXYZ\"](value));\n lab[0] = lab[0] - amount * 10;\n return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__[\"fromXYZ\"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__[\"toXYZ\"](lab));\n}\n\n/***/ }),\n\n/***/ \"vue\":\n/*!******************************************************************************!*\\\n !*** external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"amd\":\"vue\",\"root\":\"Vue\"} ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_vue__;\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuetify.js.map","/*!\n * vuex v3.5.1\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n return parent.hasChild(key)\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.5.1',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","var guid = require(\"./core/guid\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar Transformable = require(\"./mixin/Transformable\");\n\nvar Animatable = require(\"./mixin/Animatable\");\n\nvar zrUtil = require(\"./core/util\");\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n // jshint ignore:line\n Transformable.call(this, opts);\n Eventful.call(this, opts);\n Animatable.call(this, opts);\n /**\n * 画布元素ID\n * @type {string}\n */\n\n this.id = opts.id || guid();\n};\n\nElement.prototype = {\n /**\n * 元素类型\n * Element type\n * @type {string}\n */\n type: 'element',\n\n /**\n * 元素名字\n * Element name\n * @type {string}\n */\n name: '',\n\n /**\n * ZRender 实例对象,会在 element 添加到 zrender 实例中后自动赋值\n * ZRender instance will be assigned when element is associated with zrender\n * @name module:/zrender/Element#__zr\n * @type {module:zrender/ZRender}\n */\n __zr: null,\n\n /**\n * 图形是否忽略,为true时忽略图形的绘制以及事件触发\n * If ignore drawing and events of the element object\n * @name module:/zrender/Element#ignore\n * @type {boolean}\n * @default false\n */\n ignore: false,\n\n /**\n * 用于裁剪的路径(shape),所有 Group 内的路径在绘制时都会被这个路径裁剪\n * 该路径会继承被裁减对象的变换\n * @type {module:zrender/graphic/Path}\n * @see http://www.w3.org/TR/2dcontext/#clipping-region\n * @readOnly\n */\n clipPath: null,\n\n /**\n * 是否是 Group\n * @type {boolean}\n */\n isGroup: false,\n\n /**\n * Drift element\n * @param {number} dx dx on the global space\n * @param {number} dy dy on the global space\n */\n drift: function (dx, dy) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n\n case 'vertical':\n dx = 0;\n break;\n }\n\n var m = this.transform;\n\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.dirty(false);\n },\n\n /**\n * Hook before update\n */\n beforeUpdate: function () {},\n\n /**\n * Hook after update\n */\n afterUpdate: function () {},\n\n /**\n * Update each frame\n */\n update: function () {\n this.updateTransform();\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {},\n\n /**\n * @protected\n */\n attrKV: function (key, value) {\n if (key === 'position' || key === 'scale' || key === 'origin') {\n // Copy the array\n if (value) {\n var target = this[key];\n\n if (!target) {\n target = this[key] = [];\n }\n\n target[0] = value[0];\n target[1] = value[1];\n }\n } else {\n this[key] = value;\n }\n },\n\n /**\n * Hide the element\n */\n hide: function () {\n this.ignore = true;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * Show the element\n */\n show: function () {\n this.ignore = false;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * @param {string|Object} key\n * @param {*} value\n */\n attr: function (key, value) {\n if (typeof key === 'string') {\n this.attrKV(key, value);\n } else if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.attrKV(name, key[name]);\n }\n }\n }\n\n this.dirty(false);\n return this;\n },\n\n /**\n * @param {module:zrender/graphic/Path} clipPath\n */\n setClipPath: function (clipPath) {\n var zr = this.__zr;\n\n if (zr) {\n clipPath.addSelfToZr(zr);\n } // Remove previous clip path\n\n\n if (this.clipPath && this.clipPath !== clipPath) {\n this.removeClipPath();\n }\n\n this.clipPath = clipPath;\n clipPath.__zr = zr;\n clipPath.__clipTarget = this;\n this.dirty(false);\n },\n\n /**\n */\n removeClipPath: function () {\n var clipPath = this.clipPath;\n\n if (clipPath) {\n if (clipPath.__zr) {\n clipPath.removeSelfFromZr(clipPath.__zr);\n }\n\n clipPath.__zr = null;\n clipPath.__clipTarget = null;\n this.clipPath = null;\n this.dirty(false);\n }\n },\n\n /**\n * Add self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n addSelfToZr: function (zr) {\n this.__zr = zr; // 添加动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.addSelfToZr(zr);\n }\n },\n\n /**\n * Remove self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n removeSelfFromZr: function (zr) {\n this.__zr = null; // 移除动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.removeSelfFromZr(zr);\n }\n }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar eventTool = require(\"./core/event\");\n\nvar GestureMgr = require(\"./core/GestureMgr\");\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n // target can only be an element that is not silent.\n target: targetInfo.target,\n // topTarget can be a silent element.\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\n\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n Eventful.call(this);\n this.storage = storage;\n this.painter = painter;\n this.painterRoot = painterRoot;\n proxy = proxy || new EmptyProxy();\n /**\n * Proxy of event. can be Dom, WebGLSurface, etc.\n */\n\n this.proxy = null;\n /**\n * {target, topTarget, x, y}\n * @private\n * @type {Object}\n */\n\n this._hovered = {};\n /**\n * @private\n * @type {Date}\n */\n\n this._lastTouchMoment;\n /**\n * @private\n * @type {number}\n */\n\n this._lastX;\n /**\n * @private\n * @type {number}\n */\n\n this._lastY;\n /**\n * @private\n * @type {module:zrender/core/GestureMgr}\n */\n\n this._gestureMgr;\n Draggable.call(this);\n this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n constructor: Handler,\n setHandlerProxy: function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this); // Attach handler\n\n proxy.handler = this;\n }\n\n this.proxy = proxy;\n },\n mousemove: function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n // See #6198.\n\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n\n var hovered = this._hovered = isOutside ? {\n x: x,\n y: y\n } : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n } // Mouse moving on one element\n\n\n this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n },\n mouseout: function (event) {\n var eventControl = event.zrEventControl;\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n\n if (eventControl !== 'no_globalout') {\n // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n // the `globalout` should have been triggered. But currently not.\n !zrIsToLocalDOM && this.trigger('globalout', {\n type: 'globalout',\n event: event\n });\n }\n },\n\n /**\n * Resize\n */\n resize: function (event) {\n this._hovered = {};\n },\n\n /**\n * Dispatch event\n * @param {string} eventName\n * @param {event=} eventArgs\n */\n dispatch: function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n },\n\n /**\n * Dispose\n */\n dispose: function () {\n this.proxy.dispose();\n this.storage = this.proxy = this.painter = null;\n },\n\n /**\n * 设置默认的cursor style\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n },\n\n /**\n * 事件分发代理\n *\n * @private\n * @param {Object} targetInfo {target, topTarget} 目标图形元素\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n */\n dispatchToElement: function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n\n if (el && el.silent) {\n return;\n }\n\n var eventHandler = 'on' + eventName;\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n while (el) {\n el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.parent;\n\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n\n if (!eventPacket.cancelBubble) {\n // 冒泡到顶级 zrender 对象\n this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在\n\n this.painter && this.painter.eachOtherLayer(function (layer) {\n if (typeof layer[eventHandler] === 'function') {\n layer[eventHandler].call(layer, eventPacket);\n }\n\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n },\n\n /**\n * @private\n * @param {number} x\n * @param {number} y\n * @param {module:zrender/graphic/Displayable} exclude\n * @return {model:zrender/Element}\n * @method\n */\n findHover: function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = {\n x: x,\n y: y\n };\n\n for (var i = list.length - 1; i >= 0; i--) {\n var hoverCheckResult;\n\n if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n !out.topTarget && (out.topTarget = list[i]);\n\n if (hoverCheckResult !== SILENT) {\n out.target = list[i];\n break;\n }\n }\n }\n\n return out;\n },\n processGesture: function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n this.dispatchToElement({\n target: gestureInfo.target\n }, type, gestureInfo.event);\n }\n }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n\n if (name !== 'mouseup' || !isOutside) {\n // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n this._upEl = hoveredTarget;\n } else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n } else if (name === 'click') {\n if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n // including the case that `mousedown` - `mousemove` - `mouseup`,\n // which should be filtered, otherwise it will bring trouble to\n // pan and zoom.\n || !this._downPoint // Arbitrary value\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n\n this._downPoint = null;\n }\n\n this.dispatchToElement(hovered, name, event);\n };\n});\n\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent;\n\n while (el) {\n // If clipped by ancestor.\n // FIXME: If clipPath has neither stroke nor fill,\n // el.clipPath.contain(x, y) will always return false.\n if (el.clipPath && !el.clipPath.contain(x, y)) {\n return false;\n }\n\n if (el.silent) {\n isSilent = true;\n }\n\n el = el.parent;\n }\n\n return isSilent ? SILENT : true;\n }\n\n return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n var newDom = util.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n\n if (newDomStyle) {\n // In node or some other non-browser environment\n newDomStyle.position = 'absolute';\n newDomStyle.left = 0;\n newDomStyle.top = 0;\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n var dom;\n dpr = dpr || devicePixelRatio;\n\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n } // Not using isDom because in node it will return false\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n\n this.id = id;\n this.dom = dom;\n var domStyle = dom.style;\n\n if (domStyle) {\n // Not in node\n dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n domStyle['-webkit-user-select'] = 'none';\n domStyle['user-select'] = 'none';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n domStyle['border-width'] = 0;\n }\n\n this.domBack = null;\n this.ctxBack = null;\n this.painter = painter;\n this.config = null; // Configs\n\n /**\n * 每次清空画布的颜色\n * @type {string}\n * @default 0\n */\n\n this.clearColor = 0;\n /**\n * 是否开启动态模糊\n * @type {boolean}\n * @default false\n */\n\n this.motionBlur = false;\n /**\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n * @type {number}\n * @default 0.7\n */\n\n this.lastFrameAlpha = 0.7;\n /**\n * Layer dpr\n * @type {number}\n */\n\n this.dpr = dpr;\n};\n\nLayer.prototype = {\n constructor: Layer,\n __dirty: true,\n __used: false,\n __drawIndex: 0,\n __startIndex: 0,\n __endIndex: 0,\n incremental: false,\n getElementCount: function () {\n return this.__endIndex - this.__startIndex;\n },\n initContext: function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n },\n createBackBuffer: function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n },\n\n /**\n * @param {number} width\n * @param {number} height\n */\n resize: function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n\n dom.width = width * dpr;\n dom.height = height * dpr;\n\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n },\n\n /**\n * 清空该层画布\n * @param {boolean} [clearAll]=false Clear all with out motion blur\n * @param {Color} [clearColor]\n */\n clear: function (clearAll, clearColor) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n var clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n\n ctx.clearRect(0, 0, width, height);\n\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern; // Gradient\n\n if (clearColor.colorStops) {\n // Cache canvas gradient\n clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n } // Pattern\n else if (clearColor.image) {\n clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n }\n\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n }\n\n if (haveMotionBLur) {\n var domBack = this.domBack;\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, 0, 0, width, height);\n ctx.restore();\n }\n }\n};\nvar _default = Layer;\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar logError = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n\n if (layer.__builtin__) {\n return true;\n }\n\n if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n return false;\n }\n\n return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n if (clipPaths === prevClipPaths) {\n return false;\n }\n\n if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n return true;\n }\n\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n clipPath.setTransform(ctx);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip(); // Transform back\n\n clipPath.restoreTransform(ctx);\n }\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n // dom does not act as expected) when some of the parent dom has\n // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n // the canvas is not at the top part of the page.\n // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n // this `overflow:hidden` to avoid the bug.\n // 'overflow:hidden',\n 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n this.type = 'canvas'; // In node environment using node-canvas\n\n var singleCanvas = !root.nodeName // In node ?\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n /**\n * @type {number}\n */\n\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n /**\n * @type {boolean}\n * @private\n */\n\n this._singleCanvas = singleCanvas;\n /**\n * 绘图容器\n * @type {HTMLElement}\n */\n\n this.root = root;\n var rootStyle = root.style;\n\n if (rootStyle) {\n rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n /**\n * @type {module:zrender/Storage}\n */\n\n\n this.storage = storage;\n /**\n * @type {Array.<number>}\n * @private\n */\n\n var zlevelList = this._zlevelList = [];\n /**\n * @type {Object.<string, module:zrender/Layer>}\n * @private\n */\n\n var layers = this._layers = {};\n /**\n * @type {Object.<string, Object>}\n * @private\n */\n\n this._layerConfig = {};\n /**\n * zrender will do compositing when root is a canvas and have multiple zlevels.\n */\n\n this._needsManuallyCompositing = false;\n\n if (!singleCanvas) {\n this._width = this._getSize(0);\n this._height = this._getSize(1);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n } else {\n var width = root.width;\n var height = root.height;\n\n if (opts.width != null) {\n width = opts.width;\n }\n\n if (opts.height != null) {\n height = opts.height;\n }\n\n this.dpr = opts.devicePixelRatio || 1; // Use canvas width and height directly\n\n root.width = width * this.dpr;\n root.height = height * this.dpr;\n this._width = width;\n this._height = height; // Create layer if only one given canvas\n // Device can be specified to create a high dpi image.\n\n var mainLayer = new Layer(root, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext(); // FIXME Use canvas width and height\n // mainLayer.resize(width, height);\n\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n /**\n * @type {module:zrender/Layer}\n * @private\n */\n\n\n this._hoverlayer = null;\n this._hoverElements = [];\n};\n\nPainter.prototype = {\n constructor: Painter,\n getType: function () {\n return 'canvas';\n },\n\n /**\n * If painter use a single canvas\n * @return {boolean}\n */\n isSingleCanvas: function () {\n return this._singleCanvas;\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._domRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n * @param {boolean} [paintAll=false] 强制绘制所有displayable\n */\n refresh: function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n\n this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n\n this.refreshHover();\n return this;\n },\n addHover: function (el, hoverStyle) {\n if (el.__hoverMir) {\n return;\n }\n\n var elMirror = new el.constructor({\n style: el.style,\n shape: el.shape,\n z: el.z,\n z2: el.z2,\n silent: el.silent\n });\n elMirror.__from = el;\n el.__hoverMir = elMirror;\n hoverStyle && elMirror.setStyle(hoverStyle);\n\n this._hoverElements.push(elMirror);\n\n return elMirror;\n },\n removeHover: function (el) {\n var elMirror = el.__hoverMir;\n var hoverElements = this._hoverElements;\n var idx = util.indexOf(hoverElements, elMirror);\n\n if (idx >= 0) {\n hoverElements.splice(idx, 1);\n }\n\n el.__hoverMir = null;\n },\n clearHover: function (el) {\n var hoverElements = this._hoverElements;\n\n for (var i = 0; i < hoverElements.length; i++) {\n var from = hoverElements[i].__from;\n\n if (from) {\n from.__hoverMir = null;\n }\n }\n\n hoverElements.length = 0;\n },\n refreshHover: function () {\n var hoverElements = this._hoverElements;\n var len = hoverElements.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n // FIXME?\n\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n var scope = {};\n hoverLayer.ctx.save();\n\n for (var i = 0; i < len;) {\n var el = hoverElements[i];\n var originalEl = el.__from; // Original el is removed\n // PENDING\n\n if (!(originalEl && originalEl.__zr)) {\n hoverElements.splice(i, 1);\n originalEl.__hoverMir = null;\n len--;\n continue;\n }\n\n i++; // Use transform\n // FIXME style and shape ?\n\n if (!originalEl.invisible) {\n el.transform = originalEl.transform;\n el.invTransform = originalEl.invTransform;\n el.__clipPaths = originalEl.__clipPaths; // el.\n\n this._doPaintEl(el, hoverLayer, true, scope);\n }\n }\n\n hoverLayer.ctx.restore();\n },\n getHoverLayer: function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n },\n _paintList: function (list, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var finished = this._doPaintList(list, paintAll);\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (!finished) {\n var self = this;\n requestAnimationFrame(function () {\n self._paintList(list, paintAll, redrawId);\n });\n }\n },\n _compositeManually: function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n },\n _doPaintList: function (list, paintAll) {\n var layerList = [];\n\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n\n if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n\n var finished = true;\n\n for (var k = 0; k < layerList.length; k++) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var scope = {};\n ctx.save();\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n for (var i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n this._doPaintEl(el, layer, paintAll, scope);\n\n el.__dirty = el.__dirtyText = false;\n\n if (useTimer) {\n // Date.now can be executed in 13,025,305 ops/second.\n var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n // The rest elements will be drawn in the next frame.\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n\n if (scope.prevElClipPaths) {\n // Needs restore the state. If last drawn element is in the clipping area.\n ctx.restore();\n }\n\n ctx.restore();\n }\n\n if (env.wxa) {\n // Flush for weixin application\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n\n return finished;\n },\n _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n var ctx = currentLayer.ctx;\n var m = el.transform;\n\n if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n !el.invisible // Ignore transparent element\n && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n // Draw a scale 0 element can cause all following draw wrong\n // And setTransform with scale 0 will cause set back transform failed.\n && !(m && !m[0] && !m[3]) // Ignore culled element\n && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n // If has previous clipping state, restore from it\n if (prevElClipPaths) {\n ctx.restore();\n scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n scope.prevEl = null;\n } // New clipping state\n\n\n if (clipPaths) {\n ctx.save();\n doClip(clipPaths, ctx);\n scope.prevElClipPaths = clipPaths;\n }\n }\n\n el.beforeBrush && el.beforeBrush(ctx);\n el.brush(ctx, scope.prevEl || null);\n scope.prevEl = el;\n el.afterBrush && el.afterBrush(ctx);\n }\n },\n\n /**\n * 获取 zlevel 所在层,如果不存在则会创建一个新的层\n * @param {number} zlevel\n * @param {boolean} virtual Virtual layer will not be inserted into dom.\n * @return {module:zrender/Layer}\n */\n getLayer: function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n\n var layer = this._layers[zlevel];\n\n if (!layer) {\n // Create a new layer\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n\n if (virtual) {\n layer.virtual = virtual;\n }\n\n this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n // Or excanvas will get 0px clientWidth and clientHeight\n\n layer.initContext();\n }\n\n return layer;\n },\n insertLayer: function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var prevLayer = null;\n var i = -1;\n var domRoot = this._domRoot;\n\n if (layersMap[zlevel]) {\n logError('ZLevel ' + zlevel + ' has been used already');\n return;\n } // Check if is a valid layer\n\n\n if (!isLayerValid(layer)) {\n logError('Layer of zlevel ' + zlevel + ' is not valid');\n return;\n }\n\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n\n prevLayer = layersMap[zlevelList[i]];\n }\n\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n // (It can be a WebGL layer and assigned to a ZImage element)\n // But it still under management of zrender.\n\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n } else {\n domRoot.appendChild(layer.dom);\n }\n } else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n } else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n },\n // Iterate each layer\n eachLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n },\n // Iterate each buildin layer\n eachBuiltinLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n // Iterate each other layer except buildin layer\n eachOtherLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n\n /**\n * 获取所有已创建的层\n * @param {Array.<module:zrender/Layer>} [prevLayer]\n */\n getLayers: function () {\n return this._layers;\n },\n _updateLayerStatus: function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n\n prevLayer.__endIndex = idx;\n }\n }\n\n if (this._singleCanvas) {\n for (var i = 1; i < list.length; i++) {\n var el = list[i];\n\n if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n } // TODO Not use magic number on zlevel.\n // Each layer with increment element can be separated to 3 layers.\n // (Other Element drawn after incremental element)\n // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n // (Incremental element)\n // ----------------------zlevel + INCREMENTAL_INC------------------------\n // (Element drawn before incremental element)\n // --------------------------------zlevel--------------------------------\n\n\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n } else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n\n if (!layer.__builtin__) {\n logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n\n if (layer !== prevLayer) {\n layer.__used = true;\n\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n\n layer.__startIndex = i;\n\n if (!layer.incremental) {\n layer.__drawIndex = i;\n } else {\n // Mark layer draw index needs to update.\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n // Start draw from the first dirty element.\n layer.__drawIndex = i;\n }\n }\n }\n\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n // Used in last frame but not in this frame. Needs clear\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n },\n\n /**\n * 清除hover层外所有内容\n */\n clear: function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n },\n _clearLayer: function (layer) {\n layer.clear();\n },\n setBackgroundColor: function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n },\n\n /**\n * 修改指定zlevel的绘制参数\n *\n * @param {string} zlevel\n * @param {Object} config 配置对象\n * @param {string} [config.clearColor=0] 每次清空画布的颜色\n * @param {string} [config.motionBlur=false] 是否开启动态模糊\n * @param {number} [config.lastFrameAlpha=0.7]\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n */\n configLayer: function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n } else {\n util.merge(layerConfig[zlevel], config, true);\n }\n\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n },\n\n /**\n * 删除指定层\n * @param {number} zlevel 层所在的zlevel\n */\n delLayer: function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n\n if (!layer) {\n return;\n }\n\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n },\n\n /**\n * 区域大小变化后重绘\n */\n resize: function (width, height) {\n if (!this._domRoot.style) {\n // Maybe in node or worker\n if (width == null || height == null) {\n return;\n }\n\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n } else {\n var domRoot = this._domRoot; // FIXME Why ?\n\n domRoot.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n domRoot.style.display = ''; // 优化没有实际改变的resize\n\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n\n util.each(this._progressiveLayers, function (layer) {\n layer.resize(width, height);\n });\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n },\n\n /**\n * 清除单独的一个层\n * @param {number} zlevel\n */\n clearLayer: function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n },\n\n /**\n * 释放\n */\n dispose: function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n },\n\n /**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @param {number} [opts.pixelRatio]\n */\n getRenderedCanvas: function (opts) {\n opts = opts || {};\n\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width = imageLayer.dom.width;\n var height = imageLayer.dom.height;\n var ctx = imageLayer.ctx;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n } else if (layer.renderToCanvas) {\n imageLayer.ctx.save();\n layer.renderToCanvas(imageLayer.ctx);\n imageLayer.ctx.restore();\n }\n });\n } else {\n // PENDING, echarts-gl and incremental rendering.\n var scope = {};\n var displayList = this.storage.getDisplayList(true);\n\n for (var i = 0; i < displayList.length; i++) {\n var el = displayList[i];\n\n this._doPaintEl(el, imageLayer, true, scope);\n }\n }\n\n return imageLayer.dom;\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n pathToImage: function (path, dpr) {\n dpr = dpr || this.dpr;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var rect = path.getBoundingRect();\n var style = path.style;\n var shadowBlurSize = style.shadowBlur * dpr;\n var shadowOffsetX = style.shadowOffsetX * dpr;\n var shadowOffsetY = style.shadowOffsetY * dpr;\n var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n var width = rect.width + leftMargin + rightMargin;\n var height = rect.height + topMargin + bottomMargin;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n ctx.dpr = dpr;\n var pathTransform = {\n position: path.position,\n rotation: path.rotation,\n scale: path.scale\n };\n path.position = [leftMargin - rect.x, topMargin - rect.y];\n path.rotation = 0;\n path.scale = [1, 1];\n path.updateTransform();\n\n if (path) {\n path.brush(ctx);\n }\n\n var ImageShape = Image;\n var imgShape = new ImageShape({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n\n if (pathTransform.position != null) {\n imgShape.position = path.position = pathTransform.position;\n }\n\n if (pathTransform.rotation != null) {\n imgShape.rotation = path.rotation = pathTransform.rotation;\n }\n\n if (pathTransform.scale != null) {\n imgShape.scale = path.scale = pathTransform.scale;\n }\n\n return imgShape;\n }\n};\nvar _default = Painter;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar env = require(\"./core/env\");\n\nvar Group = require(\"./container/Group\");\n\nvar timsort = require(\"./core/timsort\");\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n // if (a.z2 === b.z2) {\n // // FIXME Slow has renderidx compare\n // // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n // // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n // return a.__renderidx - b.__renderidx;\n // }\n return a.z2 - b.z2;\n }\n\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n // jshint ignore:line\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n};\n\nStorage.prototype = {\n constructor: Storage,\n\n /**\n * @param {Function} cb\n *\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n },\n\n /**\n * 返回所有图形的绘制队列\n * @param {boolean} [update=false] 是否在返回前更新该数组\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n *\n * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n * @return {Array.<module:zrender/graphic/Displayable>}\n */\n getDisplayList: function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n\n if (update) {\n this.updateDisplayList(includeIgnore);\n }\n\n return this._displayList;\n },\n\n /**\n * 更新图形的绘制队列。\n * 每次绘制前都会调用,该方法会先深度优先遍历整个树,更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中,\n * 最后根据绘制的优先级(zlevel > z > 插入顺序)排序得到绘制队列\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n */\n updateDisplayList: function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n\n displayList.length = this._displayListLen;\n env.canvasSupported && timsort(displayList, shapeCompareFunc);\n },\n _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n\n el.beforeUpdate();\n\n if (el.__dirty) {\n el.update();\n }\n\n el.afterUpdate();\n var userSetClipPath = el.clipPath;\n\n if (userSetClipPath) {\n // FIXME 效率影响\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n } else {\n clipPaths = [];\n }\n\n var currentClipPath = userSetClipPath;\n var parentClipPath = el; // Recursively add clip path\n\n while (currentClipPath) {\n // clipPath 的变换是基于使用这个 clipPath 的元素\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.clipPath;\n }\n }\n\n if (el.isGroup) {\n var children = el._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i]; // Force to mark as dirty if group is dirty\n // FIXME __dirtyPath ?\n\n if (el.__dirty) {\n child.__dirty = true;\n }\n\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n } // Mark group clean here\n\n\n el.__dirty = false;\n } else {\n el.__clipPaths = clipPaths;\n this._displayList[this._displayListLen++] = el;\n }\n },\n\n /**\n * 添加图形(Shape)或者组(Group)到根节点\n * @param {module:zrender/Element} el\n */\n addRoot: function (el) {\n if (el.__storage === this) {\n return;\n }\n\n if (el instanceof Group) {\n el.addChildrenToStorage(this);\n }\n\n this.addToStorage(el);\n\n this._roots.push(el);\n },\n\n /**\n * 删除指定的图形(Shape)或者组(Group)\n * @param {string|Array.<string>} [el] 如果为空清空整个Storage\n */\n delRoot: function (el) {\n if (el == null) {\n // 不指定el清空\n for (var i = 0; i < this._roots.length; i++) {\n var root = this._roots[i];\n\n if (root instanceof Group) {\n root.delChildrenFromStorage(this);\n }\n }\n\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n }\n\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n\n return;\n }\n\n var idx = util.indexOf(this._roots, el);\n\n if (idx >= 0) {\n this.delFromStorage(el);\n\n this._roots.splice(idx, 1);\n\n if (el instanceof Group) {\n el.delChildrenFromStorage(this);\n }\n }\n },\n addToStorage: function (el) {\n if (el) {\n el.__storage = this;\n el.dirty(false);\n }\n\n return this;\n },\n delFromStorage: function (el) {\n if (el) {\n el.__storage = null;\n }\n\n return this;\n },\n\n /**\n * 清空并且释放Storage\n */\n dispose: function () {\n this._renderList = this._roots = null;\n },\n displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.<module:zrender/animation/Clip>}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\nmodule.exports = _default;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n this._target = options.target; // 生命周期\n\n this._life = options.life || 1000; // 延时\n\n this._delay = options.delay || 0; // 开始时间\n // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n this._initialized = false; // 是否循环\n\n this.loop = options.loop == null ? false : options.loop;\n this.gap = options.gap || 0;\n this.easing = options.easing || 'Linear';\n this.onframe = options.onframe;\n this.ondestroy = options.ondestroy;\n this.onrestart = options.onrestart;\n this._pausedTime = 0;\n this._paused = false;\n}\n\nClip.prototype = {\n constructor: Clip,\n step: function (globalTime, deltaTime) {\n // Set startTime on first step, or _startTime may has milleseconds different between clips\n // PENDING\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n if (percent < 0) {\n return;\n }\n\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n this.fire('frame', schedule); // 结束\n\n if (percent === 1) {\n if (this.loop) {\n this.restart(globalTime); // 重新开始周期\n // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n return 'restart';\n } // 动画完成将这个控制器标识为待删除\n // 在Animation.update中进行批量删除\n\n\n this._needsRemove = true;\n return 'destroy';\n }\n\n return null;\n },\n restart: function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n this._needsRemove = false;\n },\n fire: function (eventType, arg) {\n eventType = 'on' + eventType;\n\n if (this[eventType]) {\n this[eventType](this._target, arg);\n }\n },\n pause: function () {\n this._paused = true;\n },\n resume: function () {\n this._paused = false;\n }\n};\nvar _default = Clip;\nmodule.exports = _default;","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\nmodule.exports = _default;","var _default = typeof window !== 'undefined' && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809\nwindow.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (func) {\n setTimeout(func, 16);\n};\n\nmodule.exports = _default;","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","var _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\nvar PI2 = Math.PI * 2;\n/**\n * 圆弧描边包含判断\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {Boolean}\n */\n\nfunction containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n\n if (d - _l > r || d + _l < r) {\n return false;\n }\n\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n return true;\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var angle = Math.atan2(y, x);\n\n if (angle < 0) {\n angle += PI2;\n }\n\n return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;\n}\n\nexports.containStroke = containStroke;","var curve = require(\"../core/curve\");\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n return false;\n }\n\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","/**\n * 线段包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth;\n var _a = 0;\n var _b = x0; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {\n return false;\n }\n\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n } else {\n return Math.abs(x - x0) <= _l / 2;\n }\n\n var tmp = _a * x - y + _b;\n\n var _s = tmp * tmp / (_a * _a + 1);\n\n return _s <= _l / 2 * _l / 2;\n}\n\nexports.containStroke = containStroke;","var PathProxy = require(\"../core/PathProxy\");\n\nvar line = require(\"./line\");\n\nvar cubic = require(\"./cubic\");\n\nvar quadratic = require(\"./quadratic\");\n\nvar arc = require(\"./arc\");\n\nvar _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = require(\"../core/curve\");\n\nvar windingLine = require(\"./windingLine\");\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n return 0;\n }\n\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var w = 0;\n var nExtrema = -1;\n var y0_;\n var y1_;\n\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n var unit = t === 0 || t === 1 ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n\n if (nExtrema === 2) {\n // 分成三段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n } else {\n w += y3 < y1_ ? unit : -unit;\n }\n } else {\n // 分成两段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n\n return w;\n }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n return 0;\n }\n\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n for (var i = 0; i < nRoots; i++) {\n // Remove one endpoint.\n var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n } else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n\n return w;\n } else {\n // Remove one endpoint.\n var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n if (x_ < x) {\n // Quick reject\n return 0;\n }\n\n return y2 < y0 ? unit : -unit;\n }\n }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n\n if (y > r || y < -r) {\n return 0;\n }\n\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff < 1e-4) {\n return 0;\n }\n\n if (diff % PI2 < 1e-4) {\n // Is a circle\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n } else {\n return 0;\n }\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var w = 0;\n\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n\n if (angle < 0) {\n angle = PI2 + angle;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n\n w += dir;\n }\n }\n }\n\n return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++]; // Begin a new subpath\n\n if (cmd === CMD.M && i > 1) {\n // Close previous subpath\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n } // 如果被任何一个 subpath 包含\n // if (w !== 0) {\n // return true;\n // }\n\n }\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n var x1 = Math.cos(theta) * rx + cx;\n var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i > 1) {\n w += windingLine(xi, yi, x1, y1, x, y);\n } else {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n } else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n var x1 = x0 + width;\n var y1 = y0 + height;\n\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // FIXME Clockwise ?\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n\n break;\n\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // Close a subpath\n w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n // FIXME subpaths may overlap\n // if (w !== 0) {\n // return true;\n // }\n }\n\n xi = x0;\n yi = y0;\n break;\n }\n }\n\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n\n return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","var _curve = require(\"../core/curve\");\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n return false;\n }\n\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","var BoundingRect = require(\"../core/BoundingRect\");\n\nvar imageHelper = require(\"../graphic/helper/image\");\n\nvar _util = require(\"../core/util\");\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var key = text + ':' + font;\n\n if (textWidthCache[key]) {\n return textWidthCache[key];\n }\n\n var textLines = (text + '').split('\\n');\n var width = 0;\n\n for (var i = 0, l = textLines.length; i < l; i++) {\n // textContain.measureText may be overrided in SVG or VML\n width = Math.max(measureText(textLines[i], font).width, width);\n }\n\n if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n textWidthCacheCounter = 0;\n textWidthCache = {};\n }\n\n textWidthCacheCounter++;\n textWidthCache[key] = width;\n return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.<number>} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate) {\n var contentBlock = parsePlainText(text, font, textPadding, textLineHeight, truncate);\n var outerWidth = getWidth(text, font);\n\n if (textPadding) {\n outerWidth += textPadding[1] + textPadding[3];\n }\n\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n rect.lineHeight = contentBlock.lineHeight;\n return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n var contentBlock = parseRichText(text, {\n rich: rich,\n truncate: truncate,\n font: font,\n textAlign: textAlign,\n textPadding: textPadding,\n textLineHeight: textLineHeight\n });\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n // FIXME Right to left language\n if (textAlign === 'right') {\n x -= width;\n } else if (textAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n if (textVerticalAlign === 'middle') {\n y -= height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y -= height;\n }\n\n return y;\n}\n/**\n * Follow same interface to `Displayable.prototype.calculateTextPosition`.\n * @public\n * @param {Obejct} [out] Prepared out object. If not input, auto created in the method.\n * @param {module:zrender/graphic/Style} style where `textPosition` and `textDistance` are visited.\n * @param {Object} rect {x, y, width, height} Rect of the host elment, according to which the text positioned.\n * @return {Object} The input `out`. Set: {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction calculateTextPosition(out, style, rect) {\n var textPosition = style.textPosition;\n var distance = style.textDistance;\n var x = rect.x;\n var y = rect.y;\n distance = distance || 0;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n\n out = out || {};\n out.x = x;\n out.y = y;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n/**\n * To be removed. But still do not remove in case that some one has imported it.\n * @deprecated\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n var dummyStyle = {\n textPosition: textPosition,\n textDistance: distance\n };\n return calculateTextPosition({}, dummyStyle, rect);\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param {string} text\n * @param {string} containerWidth\n * @param {string} font\n * @param {number} [ellipsis='...']\n * @param {Object} [options]\n * @param {number} [options.maxIterations=3]\n * @param {number} [options.minChar=0] If truncate result are less\n * then minChar, ellipsis will not show, which is\n * better for user hint in some cases.\n * @param {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n\n return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = extend({}, options);\n options.font = font;\n var ellipsis = retrieve2(ellipsis, '...');\n options.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n // Other languages?\n\n options.cnCharWidth = getWidth('国', font); // FIXME\n // Consider proportional font?\n\n var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n\n var ellipsisWidth = getWidth(ellipsis, font);\n\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n\n contentWidth = containerWidth - ellipsisWidth;\n options.ellipsis = ellipsis;\n options.ellipsisWidth = ellipsisWidth;\n options.contentWidth = contentWidth;\n options.containerWidth = containerWidth;\n return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n\n if (!containerWidth) {\n return '';\n }\n\n var lineWidth = getWidth(textLine, font);\n\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n\n var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n\n if (textLine === '') {\n textLine = options.placeholder;\n }\n\n return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n }\n\n return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n // FIXME A rough approach.\n return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n var ctx = getContext();\n ctx.font = font || DEFAULT_FONT;\n return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight, canCacheByTextString}\n * Notice: for performance, do not calculate outerWidth util needed.\n * `canCacheByTextString` means the result `lines` is only determined by the input `text`.\n * Thus we can simply comparing the `input` text to determin whether the result changed,\n * without travel the result `lines`.\n */\n\n\nfunction parsePlainText(text, font, padding, textLineHeight, truncate) {\n text != null && (text += '');\n var lineHeight = retrieve2(textLineHeight, getLineHeight(font));\n var lines = text ? text.split('\\n') : [];\n var height = lines.length * lineHeight;\n var outerHeight = height;\n var canCacheByTextString = true;\n\n if (padding) {\n outerHeight += padding[0] + padding[2];\n }\n\n if (text && truncate) {\n canCacheByTextString = false;\n var truncOuterHeight = truncate.outerHeight;\n var truncOuterWidth = truncate.outerWidth;\n\n if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n text = '';\n lines = [];\n } else if (truncOuterWidth != null) {\n var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n minChar: truncate.minChar,\n placeholder: truncate.placeholder\n }); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = lines.length; i < len; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n }\n\n return {\n lines: lines,\n height: height,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n canCacheByTextString: canCacheByTextString\n };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n * width,\n * height,\n * lines: [{\n * lineHeight,\n * width,\n * tokens: [[{\n * styleName,\n * text,\n * width, // include textPadding\n * height, // include textPadding\n * textWidth, // pure text width\n * textHeight, // pure text height\n * lineHeihgt,\n * font,\n * textAlign,\n * textVerticalAlign\n * }], [...], ...]\n * }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n var contentBlock = {\n lines: [],\n width: 0,\n height: 0\n };\n text != null && (text += '');\n\n if (!text) {\n return contentBlock;\n }\n\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n }\n\n pushTokens(contentBlock, result[2], result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length));\n }\n\n var lines = contentBlock.lines;\n var contentHeight = 0;\n var contentWidth = 0; // For `textWidth: 100%`\n\n var pendingList = [];\n var stlPadding = style.textPadding;\n var truncate = style.truncate;\n var truncateWidth = truncate && truncate.outerWidth;\n var truncateHeight = truncate && truncate.outerHeight;\n\n if (stlPadding) {\n truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n } // Calculate layout info of tokens.\n\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n // as box height of the block.\n tokenStyle.textHeight, getLineHeight(font));\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n return {\n lines: [],\n width: 0,\n height: 0\n };\n }\n\n token.textWidth = getWidth(token.text, font);\n var tokenWidth = tokenStyle.textWidth;\n var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n // line when box width is needed to be auto.\n\n if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n token.percentWidth = tokenWidth;\n pendingList.push(token);\n tokenWidth = 0; // Do not truncate in this case, because there is no user case\n // and it is too complicated.\n } else {\n if (tokenWidthNotSpecified) {\n tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n // `getBoundingRect()` will not get correct result.\n\n var textBackgroundColor = tokenStyle.textBackgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n // (1) If image is not loaded, it will be loaded at render phase and call\n // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n // image, and then the right size will be calculated here at the next tick.\n // See `graphic/helper/text.js`.\n // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n // use `imageHelper.findExistImage` to find cached image.\n // `imageHelper.findExistImage` will always be called here before\n // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n // which ensures that image will not be rendered before correct size calcualted.\n\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n\n if (imageHelper.isImageReady(bgImg)) {\n tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n\n var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n tokenWidth += paddingW;\n var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n token.text = '';\n token.textWidth = tokenWidth = 0;\n } else {\n token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n minChar: truncate.minChar\n });\n token.textWidth = getWidth(token.text, font);\n tokenWidth = token.textWidth + paddingW;\n }\n }\n }\n\n lineWidth += token.width = tokenWidth;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n contentHeight += lineHeight;\n contentWidth = Math.max(contentWidth, lineWidth);\n }\n\n contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n }\n\n return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n var isEmptyStr = str === '';\n var strs = str.split('\\n');\n var lines = block.lines;\n\n for (var i = 0; i < strs.length; i++) {\n var text = strs[i];\n var token = {\n styleName: styleName,\n text: text,\n isLineHolder: !text && !isEmptyStr\n }; // The first token should be appended to the last line.\n\n if (!i) {\n var tokens = (lines[lines.length - 1] || (lines[0] = {\n tokens: []\n })).tokens; // Consider cases:\n // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n // (which is a placeholder) should be replaced by new token.\n // (2) A image backage, where token likes {a|}.\n // (3) A redundant '' will affect textAlign in line.\n // (4) tokens with the same tplName should not be merged, because\n // they should be displayed in different box (with border and padding).\n\n var tokensLen = tokens.length;\n tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n (text || !tokensLen || isEmptyStr) && tokens.push(token);\n } // Other tokens always start a new line.\n else {\n // If there is '', insert it as a placeholder.\n lines.push({\n tokens: [token]\n });\n }\n }\n}\n\nfunction makeFont(style) {\n // FIXME in node-canvas fontWeight is before fontStyle\n // Use `fontSize` `fontFamily` to check whether font properties are defined.\n var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n style.fontFamily || 'sans-serif'].join(' ');\n return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.calculateTextPosition = calculateTextPosition;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;","var PI2 = Math.PI * 2;\n\nfunction normalizeRadian(angle) {\n angle %= PI2;\n\n if (angle < 0) {\n angle += PI2;\n }\n\n return angle;\n}\n\nexports.normalizeRadian = normalizeRadian;","function windingLine(x0, y0, x1, y1, x, y) {\n if (y > y0 && y > y1 || y < y0 && y < y1) {\n return 0;\n } // Ignore horizontal line\n\n\n if (y1 === y0) {\n return 0;\n }\n\n var dir = y1 < y0 ? 1 : -1;\n var t = (y - y0) / (y1 - y0); // Avoid winding error when intersection point is the connect point of two line of polygon\n\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n\n var x_ = t * (x1 - x0) + x0; // If (x, y) on the line, considered as \"contain\".\n\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n\nmodule.exports = windingLine;","var zrUtil = require(\"../core/util\");\n\nvar Element = require(\"../Element\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Group是一个容器,可以插入子节点,Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n * var Group = require('zrender/container/Group');\n * var Circle = require('zrender/graphic/shape/Circle');\n * var g = new Group();\n * g.position[0] = 100;\n * g.position[1] = 100;\n * g.add(new Circle({\n * style: {\n * x: 100,\n * y: 100,\n * r: 20,\n * }\n * }));\n * zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n opts = opts || {};\n Element.call(this, opts);\n\n for (var key in opts) {\n if (opts.hasOwnProperty(key)) {\n this[key] = opts[key];\n }\n }\n\n this._children = [];\n this.__storage = null;\n this.__dirty = true;\n};\n\nGroup.prototype = {\n constructor: Group,\n isGroup: true,\n\n /**\n * @type {string}\n */\n type: 'group',\n\n /**\n * 所有子孙元素是否响应鼠标事件\n * @name module:/zrender/container/Group#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * @return {Array.<module:zrender/Element>}\n */\n children: function () {\n return this._children.slice();\n },\n\n /**\n * 获取指定 index 的儿子节点\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n childAt: function (idx) {\n return this._children[idx];\n },\n\n /**\n * 获取指定名字的儿子节点\n * @param {string} name\n * @return {module:zrender/Element}\n */\n childOfName: function (name) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n },\n\n /**\n * @return {number}\n */\n childCount: function () {\n return this._children.length;\n },\n\n /**\n * 添加子节点到最后\n * @param {module:zrender/Element} child\n */\n add: function (child) {\n if (child && child !== this && child.parent !== this) {\n this._children.push(child);\n\n this._doAdd(child);\n }\n\n return this;\n },\n\n /**\n * 添加子节点在 nextSibling 之前\n * @param {module:zrender/Element} child\n * @param {module:zrender/Element} nextSibling\n */\n addBefore: function (child, nextSibling) {\n if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n\n if (idx >= 0) {\n children.splice(idx, 0, child);\n\n this._doAdd(child);\n }\n }\n\n return this;\n },\n _doAdd: function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n\n child.parent = this;\n var storage = this.__storage;\n var zr = this.__zr;\n\n if (storage && storage !== child.__storage) {\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n\n zr && zr.refresh();\n },\n\n /**\n * 移除子节点\n * @param {module:zrender/Element} child\n */\n remove: function (child) {\n var zr = this.__zr;\n var storage = this.__storage;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n\n if (idx < 0) {\n return this;\n }\n\n children.splice(idx, 1);\n child.parent = null;\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n zr && zr.refresh();\n return this;\n },\n\n /**\n * 移除所有子节点\n */\n removeAll: function () {\n var children = this._children;\n var storage = this.__storage;\n var child;\n var i;\n\n for (i = 0; i < children.length; i++) {\n child = children[i];\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n child.parent = null;\n }\n\n children.length = 0;\n return this;\n },\n\n /**\n * 遍历所有子节点\n * @param {Function} cb\n * @param {} context\n */\n eachChild: function (cb, context) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n\n return this;\n },\n\n /**\n * 深度优先遍历所有子孙节点\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n cb.call(context, child);\n\n if (child.type === 'group') {\n child.traverse(cb, context);\n }\n }\n\n return this;\n },\n addChildrenToStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n },\n delChildrenFromStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n },\n dirty: function () {\n this.__dirty = true;\n this.__zr && this.__zr.refresh();\n return this;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function (includeChildren) {\n // TODO Caching\n var rect = null;\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.ignore || child.invisible) {\n continue;\n }\n\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat); // TODO\n // The boundingRect cacluated by transforming original\n // rect may be bigger than the actual bundingRect when rotation\n // is used. (Consider a circle rotated aginst its center, where\n // the actual boundingRect should be the same as that not be\n // rotated.) But we can not find better approach to calculate\n // actual boundingRect yet, considering performance.\n\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n } else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n\n return rect || tmpRect;\n }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar matrix = require(\"./matrix\");\n\n/**\n * @module echarts/core/BoundingRect\n */\nvar v2ApplyTransform = vec2.applyTransform;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n/**\n * @alias module:echarts/core/BoundingRect\n */\n\nfunction BoundingRect(x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n /**\n * @type {number}\n */\n\n\n this.x = x;\n /**\n * @type {number}\n */\n\n this.y = y;\n /**\n * @type {number}\n */\n\n this.width = width;\n /**\n * @type {number}\n */\n\n this.height = height;\n}\n\nBoundingRect.prototype = {\n constructor: BoundingRect,\n\n /**\n * @param {module:echarts/core/BoundingRect} other\n */\n union: function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n this.x = x;\n this.y = y;\n },\n\n /**\n * @param {Array.<number>} m\n * @methods\n */\n applyTransform: function () {\n var lt = [];\n var rb = [];\n var lb = [];\n var rt = [];\n return function (m) {\n // In case usage like this\n // el.getBoundingRect().applyTransform(el.transform)\n // And element has no transform\n if (!m) {\n return;\n }\n\n lt[0] = lb[0] = this.x;\n lt[1] = rt[1] = this.y;\n rb[0] = rt[0] = this.x + this.width;\n rb[1] = lb[1] = this.y + this.height;\n v2ApplyTransform(lt, lt, m);\n v2ApplyTransform(rb, rb, m);\n v2ApplyTransform(lb, lb, m);\n v2ApplyTransform(rt, rt, m);\n this.x = mathMin(lt[0], rb[0], lb[0], rt[0]);\n this.y = mathMin(lt[1], rb[1], lb[1], rt[1]);\n var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]);\n var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]);\n this.width = maxX - this.x;\n this.height = maxY - this.y;\n };\n }(),\n\n /**\n * Calculate matrix of transforming from self to target rect\n * @param {module:zrender/core/BoundingRect} b\n * @return {Array.<number>}\n */\n calculateTransform: function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create(); // 矩阵右乘\n\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n },\n\n /**\n * @param {(module:echarts/core/BoundingRect|Object)} b\n * @return {boolean}\n */\n intersect: function (b) {\n if (!b) {\n return false;\n }\n\n if (!(b instanceof BoundingRect)) {\n // Normalize negative width/height.\n b = BoundingRect.create(b);\n }\n\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n },\n contain: function (x, y) {\n var rect = this;\n return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n },\n\n /**\n * @return {module:echarts/core/BoundingRect}\n */\n clone: function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n },\n\n /**\n * Copy from another rect\n */\n copy: function (other) {\n this.x = other.x;\n this.y = other.y;\n this.width = other.width;\n this.height = other.height;\n },\n plain: function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n }\n};\n/**\n * @param {Object|module:zrender/core/BoundingRect} rect\n * @param {number} rect.x\n * @param {number} rect.y\n * @param {number} rect.width\n * @param {number} rect.height\n * @return {module:zrender/core/BoundingRect}\n */\n\nBoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n};\n\nvar _default = BoundingRect;\nmodule.exports = _default;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.<Object>}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","// Simple LRU cache use doubly linked list\n// @module zrender/core/LRU\n\n/**\n * Simple double linked list. Compared with array, it has O(1) remove operation.\n * @constructor\n */\nvar LinkedList = function () {\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n this.head = null;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.tail = null;\n this._len = 0;\n};\n\nvar linkedListProto = LinkedList.prototype;\n/**\n * Insert a new value at the tail\n * @param {} val\n * @return {module:zrender/core/LRU~Entry}\n */\n\nlinkedListProto.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n};\n/**\n * Insert an entry at the tail\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n } else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n\n this._len++;\n};\n/**\n * Remove entry.\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n\n if (prev) {\n prev.next = next;\n } else {\n // Is head\n this.head = next;\n }\n\n if (next) {\n next.prev = prev;\n } else {\n // Is tail\n this.tail = prev;\n }\n\n entry.next = entry.prev = null;\n this._len--;\n};\n/**\n * @return {number}\n */\n\n\nlinkedListProto.len = function () {\n return this._len;\n};\n/**\n * Clear list\n */\n\n\nlinkedListProto.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n};\n/**\n * @constructor\n * @param {} val\n */\n\n\nvar Entry = function (val) {\n /**\n * @type {}\n */\n this.value = val;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.next;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.prev;\n};\n/**\n * LRU Cache\n * @constructor\n * @alias module:zrender/core/LRU\n */\n\n\nvar LRU = function (maxSize) {\n this._list = new LinkedList();\n this._map = {};\n this._maxSize = maxSize || 10;\n this._lastRemovedEntry = null;\n};\n\nvar LRUProto = LRU.prototype;\n/**\n * @param {string} key\n * @param {} value\n * @return {} Removed value\n */\n\nLRUProto.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n\n if (map[key] == null) {\n var len = list.len(); // Reuse last removed entry\n\n var entry = this._lastRemovedEntry;\n\n if (len >= this._maxSize && len > 0) {\n // Remove the least recently used\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n\n if (entry) {\n entry.value = value;\n } else {\n entry = new Entry(value);\n }\n\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n\n return removed;\n};\n/**\n * @param {string} key\n * @return {}\n */\n\n\nLRUProto.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n\n if (entry != null) {\n // Put the latest used entry in the tail\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n\n return entry.value;\n }\n};\n/**\n * Clear the cache\n */\n\n\nLRUProto.clear = function () {\n this._list.clear();\n\n this._map = {};\n};\n\nvar _default = LRU;\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.<Object>}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.<module:zrender/core/PathProxy>} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array<Object>} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n var i;\n\n for (i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n\n for (i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根,使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} val\n * @param {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n // Evaluate roots of cubic functions\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b; //t1, t2, t3, b is not zero\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K; // t1, a is not zero\n\n var t2 = -K / 2; // t2, t3\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {Array.<number>} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {Array.<number>} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123; // Seg1\n\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval; // t - interval\n\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n // p1 is center of p0 and p2\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.<number>} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012; // Seg1\n\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval; // t - interval\n\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","var env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n * // Then locate the tip element on the event point.\n * var tipEl = document.createElement('div');\n * tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n * document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output..\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n * of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output. If `inverse: false`,\n * it represents \"local coord\", otherwise \"vireport coord\".\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n * `true`: from \"viewport coord\" to \"local coord\".\n * `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n\n return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var oldCoordTheSame = true;\n var srcCoords = [];\n var destCoords = [];\n\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // <http://caniuse.com/#search=pointer%20event>.\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\n// }\n\n\nmodule.exports = _default;","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\nvar _dom = require(\"./dom\");\n\nvar isCanvasEl = _dom.isCanvasEl;\nvar transformCoordWithViewport = _dom.transformCoordWithViewport;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n // to the padding edge of the target element. The only browser using this convention\n // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n // not support the properties.\n // (see http://www.jacklmoore.com/notes/mouse-position/)\n // In zr painter.dom, padding edge equals to border edge.\n\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n // zoom-factor, overflow / opacity layers, transforms ...)\n // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n // <https://bugs.jquery.com/ticket/8523#comment:14>\n // BTW3, In ff, offsetX/offsetY is always 0.\n else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n } // For some other device, e.g., IOS safari.\n else {\n calculateZrXY(el, e, out);\n }\n\n return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n\n if (isCanvasEl(el)) {\n // Original approach, which do not support CSS transform.\n // marker can not be locationed in a canvas container\n // (getBoundingClientRect is always 0). We do not support\n // that input a pre-created canvas to zr while using css\n // transform in iOS.\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n } else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n\n out.zrX = out.zrY = 0;\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n * For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n\n if (e.zrX != null) {\n return e;\n }\n\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n } else {\n var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n // If e.which has been defined, it may be readonly,\n // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n var button = e.button;\n\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n } // [Caution]: `e.which` from browser is not always reliable. For example,\n // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n // Reproduct the console warning:\n // [Violation] Added non-passive event listener to a scroll-blocking <some> event.\n // Consider marking event handler as 'passive' to make the page more responsive.\n // Just set console log level: verbose in chrome dev tool.\n // then the warning log will be printed when addEventListener called.\n // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // We have not yet found a neat way to using passive. Because in zrender the dom event\n // listener delegate all of the upper events of element. Some of those events need\n // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n // Before passive can be adopted, these issues should be considered:\n // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n // passive or not.\n // (2) How to tread that some zrender event listener is passive, and some is not. If\n // we use other way but not preventDefault of mousewheel and touchmove, browser\n // compatibility should be handled.\n // var opts = (env.passiveSupported && name === 'mousewheel')\n // ? {passive: true}\n // // By default, the third param of el.addEventListener is `capture: false`.\n // : void 0;\n // el.addEventListener(name, handler /* , opts */);\n el.addEventListener(name, handler, opt);\n } else {\n // For simplicity, do not implement `setCapture` for IE9-.\n el.attachEvent('on' + name, handler);\n }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n } else {\n el.detachEvent('on' + name, handler);\n }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n} : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n // If e.which is undefined, considered as left mouse event.\n return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;","/**\n * The algoritm is learnt from\n * https://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/\n * And we made some optimization for matrix inversion.\n * Other similar approaches:\n * \"cv::getPerspectiveTransform\", \"Direct Linear Transformation\".\n */\nvar LN2 = Math.log(2);\n\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n\n if (rank === 1) {\n // In this case the colMask must be like: `11101111`. We can find the place of `0`.\n var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n\n var subRowMask = rowMask | 1 << rowStart;\n var subRowStart = rowStart + 1;\n\n while (rowMask & 1 << subRowStart) {\n subRowStart++;\n }\n\n var sum = 0;\n\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] // det(subMatrix(0, j))\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n\n detCache[cacheKey] = sum;\n return sum;\n}\n/**\n * Usage:\n * ```js\n * var transformer = buildTransformer(\n * [10, 44, 100, 44, 100, 300, 10, 300],\n * [50, 54, 130, 14, 140, 330, 14, 220]\n * );\n * var out = [];\n * transformer && transformer([11, 33], out);\n * ```\n *\n * Notice: `buildTransformer` may take more than 10ms in some Android device.\n *\n * @param {Array.<number>} src source four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @param {Array.<number>} dest destination four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @return {Function} transformer If fail, return null/undefined.\n */\n\n\nfunction buildTransformer(src, dest) {\n var mA = [[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n\n if (det === 0) {\n // can not make transformer when and only when\n // any three of the markers are collinear.\n return;\n } // `invert(mA) * dest`, that is, `adj(mA) / det * dest`.\n\n\n var vh = [];\n\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1) * // det(subMatrix(i, j))\n determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];\n }\n }\n\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n\nexports.buildTransformer = buildTransformer;","/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n return idStart++;\n}\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.<number>}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.<number>} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m1\n * @param {Float32Array|Array.<number>} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.<number>} val\n * @return {Array.<number>}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n var out = new ArrayCtor(2);\n\n if (x == null) {\n x = 0;\n }\n\n if (y == null) {\n y = 0;\n }\n\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n var out = new ArrayCtor(2);\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n var d = len(v);\n\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n } else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n\n return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * 求两个向量最小值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\n/**\n * 求两个向量最大值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var _event = require(\"../core/event\");\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\nvar getNativeEvent = _event.getNativeEvent;\n\nvar zrUtil = require(\"../core/util\");\n\nvar Eventful = require(\"../mixin/Eventful\");\n\nvar env = require(\"../core/env\");\n\n/* global document */\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\n\nvar localNativeListenerNames = function () {\n var mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n var touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\n var pointerEventNameMap = {\n pointerdown: 1,\n pointerup: 1,\n pointermove: 1,\n pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n}();\n\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\n\nfunction eventNameFix(name) {\n return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n// return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// function onMSGestureChange(proxy, event) {\n// if (event.translationX || event.translationY) {\n// // mousemove is carried by MSGesture to reduce the sensitivity.\n// proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n// }\n// if (event.scale !== 1) {\n// event.pinchX = event.offsetX;\n// event.pinchY = event.offsetY;\n// event.pinchScale = event.scale;\n// proxy.handler.dispatchToElement(event.target, 'pinch', event);\n// }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see <https://github.com/deltakosh/handjs/blob/master/src/hand.base.js>\n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n *\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction setTouchTimer(scope) {\n scope.touching = true;\n\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n} // Mark touch, which is useful in distinguish touch and\n// mouse event in upper applicatoin.\n\n\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n} // function markTriggeredFromLocal(event) {\n// event && (event.__zrIsFromLocal = true);\n// }\n// function isTriggeredFromLocal(instance, event) {\n// return !!(event && event.__zrIsFromLocal);\n// }\n\n\nfunction normalizeGlobalEvent(instance, event) {\n // offsetX, offsetY still need to be calculated. They are necessary in the event\n // handlers of the upper applications. Set `true` to force calculate them.\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\n/**\n * Detect whether the given el is in `painterRoot`.\n */\n\n\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n\n while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {\n elTmp = elTmp.parentNode;\n }\n\n return isLocal;\n}\n/**\n * Make a fake event but not change the original event,\n * becuase the global event probably be used by other\n * listeners not belonging to zrender.\n * @class\n */\n\n\nfunction FakeGlobalEvent(instance, event) {\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType; // Necessray for the force calculation of zrX, zrY\n\n this.clientX = event.clientX;\n this.clientY = event.clientY; // Because we do not mount global listeners to touch events,\n // we do not copy `targetTouches` and `changedTouches` here.\n}\n\nvar fakeGlobalEventProto = FakeGlobalEvent.prototype; // we make the default methods on the event do nothing,\n// otherwise it is dangerous. See more details in\n// [Drag outside] in `Handler.js`.\n\nfakeGlobalEventProto.stopPropagation = fakeGlobalEventProto.stopImmediatePropagation = fakeGlobalEventProto.preventDefault = zrUtil.noop;\n/**\n * Local DOM Handlers\n * @this {HandlerProxy}\n */\n\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this._mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this._mayPointerCapture;\n\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n togglePointerCapture(this, true);\n }\n\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event); // Similarly to the browser did on `document` and touch event,\n // `globalout` will be delayed to final pointer cature release.\n\n if (this._pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n } // There might be some doms created by upper layer application\n // at the same level of painter.getViewportRoot() (e.g., tooltip\n // dom created by echarts), where 'globalout' event should not\n // be triggered when mouse enters these doms. (But 'mouseout'\n // should be triggered at the original hovered element as usual).\n\n\n var element = event.toElement || event.relatedTarget;\n event.zrIsToLocalDOM = isLocalEl(this, element);\n this.trigger('mouseout', event);\n },\n touchstart: function (event) {\n // Default mouse behaviour should not be disabled here.\n // For example, page may needs to be slided.\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this._lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start'); // For consistent event listener for both touch device and mouse device,\n // we simulate \"mouseover-->mousedown\" in touch device. So we trigger\n // `mousemove` here (to trigger `mouseover` inside), and then trigger\n // `mousedown`.\n\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change'); // Mouse move should always be triggered no matter whether\n // there is gestrue event, because mouse move and pinch may\n // be used at the same time.\n\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n // we can conveniently implement \"hover style\" in both PC and touch device just\n // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n // to remove \"hover style\" on an element, without any additional code for\n // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n // style\" will remain for user view)\n // click event should always be triggered no matter whether\n // there is gestrue event. System click can not be prevented.\n\n if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n // this._msGesture.addPointer(event.pointerId);\n // }\n },\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n // pointerout will be triggered when tap on touch screen\n // (IE11+/Edge on MS Surface) after click event triggered,\n // which is inconsistent with the mousout behavior we defined\n // in touchend. So we unify them.\n // (check localDOMHandlers.touchend for detailed explanation)\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\n/**\n * Othere DOM UI Event handlers for zr dom.\n * @this {HandlerProxy}\n */\n\nzrUtil.each(['click', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\n/**\n * DOM UI Event handlers for global page.\n *\n * [Caution]:\n * those handlers should both support in capture phase and bubble phase!\n *\n * @this {HandlerProxy}\n */\n\nvar globalDOMHandlers = {\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this._pointerCapturing;\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n\n if (env.pointerEventsSupported) {\n // Only IE11+/Edge\n // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n // at the same time.\n // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n // screen, which do not occurs in pointer event.\n // So we use pointer event to both detect touch gesture and mouse behavior.\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n });\n }); // FIXME\n // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n // which does not prevent defuault behavior occasionally (which may cause view port\n // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n // touch screen. And we only support click behavior on MS touch screen now.\n // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n // We dont support touch on IE on win7.\n // See <https://msdn.microsoft.com/en-us/library/dn433243(v=vs.85).aspx>\n // if (typeof MSGesture === 'function') {\n // (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n // dom.addEventListener('MSGestureChange', onMSGestureChange);\n // }\n } else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n }); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n // addEventListener(root, 'mouseout', this._mouseoutHandler);\n } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n // mouse event can not be handle in those devices.\n // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n\n if (!scope.touching) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction mountGlobalDOMEventListeners(instance, scope) {\n // Only IE11+/Edge. See the comment in `mountLocalDOMEventListeners`.\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n } // Touch event has implemented \"drag outside\" so we do not mount global listener for touch event.\n // (see https://www.w3.org/TR/touch-events/#the-touchmove-event)\n // We do not consider \"both-support-touch-and-mouse device\" for this feature (see the comment of\n // `mountLocalDOMEventListeners`) to avoid bugs util some requirements come.\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event); // See the reason in [Drag outside] in `Handler.js`\n // This checking supports both `useCapture` or not.\n // PENDING: if there is performance issue in some devices,\n // we probably can not use `useCapture` and change a easier\n // to judes whether local (mark).\n\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {\n capture: true\n } // See [Drag Outside] in `Handler.js`\n );\n }\n}\n\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, eventNameFix(nativeEventName), listener, opt);\n}\n\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, eventNameFix(nativeEventName), mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n\n scope.mounted = {};\n}\n/**\n * See [Drag Outside] in `Handler.js`.\n * @implement\n * @param {boolean} isPointerCapturing Should never be `null`/`undefined`.\n * `true`: start to capture pointer if it is not capturing.\n * `false`: end the capture if it is capturing.\n */\n\n\nfunction togglePointerCapture(instance, isPointerCapturing) {\n instance._mayPointerCapture = null;\n\n if (globalEventSupported && instance._pointerCapturing ^ isPointerCapturing) {\n instance._pointerCapturing = isPointerCapturing;\n var globalHandlerScope = instance._globalHandlerScope;\n isPointerCapturing ? mountGlobalDOMEventListeners(instance, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);\n }\n}\n/**\n * @inner\n * @class\n */\n\n\nfunction DOMHandlerScope(domTarget, domHandlers) {\n this.domTarget = domTarget;\n this.domHandlers = domHandlers; // Key: eventName, value: mounted handler funcitons.\n // Used for unmount.\n\n this.mounted = {};\n this.listenerOpts = {};\n this.touchTimer = null;\n this.touching = false;\n}\n/**\n * @public\n * @class\n */\n\n\nfunction HandlerDomProxy(dom, painterRoot) {\n Eventful.call(this);\n this.dom = dom;\n this.painterRoot = painterRoot;\n this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n\n if (globalEventSupported) {\n this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n /**\n * @type {boolean}\n */\n\n\n this._pointerCapturing = false;\n /**\n * @type {Array.<number>} [x, y] or null.\n */\n\n this._mayPointerCapture = null;\n mountLocalDOMEventListeners(this, this._localHandlerScope);\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n type: 'compound',\n shape: {\n paths: null\n },\n _updatePathDirty: function () {\n var dirtyPath = this.__dirtyPath;\n var paths = this.shape.paths;\n\n for (var i = 0; i < paths.length; i++) {\n // Mark as dirty if any subpath is dirty\n dirtyPath = dirtyPath || paths[i].__dirtyPath;\n }\n\n this.__dirtyPath = dirtyPath;\n this.__dirty = this.__dirty || dirtyPath;\n },\n beforeBrush: function () {\n this._updatePathDirty();\n\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale(); // Update path scale\n\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n },\n buildPath: function (ctx, shape) {\n var paths = shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n },\n afterBrush: function () {\n var paths = this.shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].__dirtyPath = false;\n }\n },\n getBoundingRect: function () {\n this._updatePathDirty();\n\n return Path.prototype.getBoundingRect.call(this);\n }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","/**\n * @param {Array.<Object>} colorStops\n */\nvar Gradient = function (colorStops) {\n this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n constructor: Gradient,\n addColorStop: function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n }\n};\nvar _default = Gradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.<Object>} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'linear', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.x2 = x2 == null ? 1 : x2;\n this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n this.type = 'linear'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar pathContain = require(\"../contain/path\");\n\nvar Pattern = require(\"./Pattern\");\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n Displayable.call(this, opts);\n /**\n * @type {module:zrender/core/PathProxy}\n * @readOnly\n */\n\n this.path = null;\n}\n\nPath.prototype = {\n constructor: Path,\n type: 'path',\n __dirtyPath: true,\n strokeContainThreshold: 5,\n // This item default to be false. But in map series in echarts,\n // in order to improve performance, it should be set to true,\n // so the shorty segment won't draw.\n segmentIgnoreThreshold: 0,\n\n /**\n * See `module:zrender/src/graphic/helper/subPixelOptimize`.\n * @type {boolean}\n */\n subPixelOptimize: false,\n brush: function (ctx, prevEl) {\n var style = this.style;\n var path = this.path || pathProxyForDraw;\n var hasStroke = style.hasStroke();\n var hasFill = style.hasFill();\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n style.bind(ctx, this, prevEl);\n this.setTransform(ctx);\n\n if (this.__dirty) {\n var rect; // Update gradient because bounding rect may changed\n\n if (hasFillGradient) {\n rect = rect || this.getBoundingRect();\n this._fillGradient = style.getGradient(ctx, fill, rect);\n }\n\n if (hasStrokeGradient) {\n rect = rect || this.getBoundingRect();\n this._strokeGradient = style.getGradient(ctx, stroke, rect);\n }\n } // Use the gradient or pattern\n\n\n if (hasFillGradient) {\n // PENDING If may have affect the state\n ctx.fillStyle = this._fillGradient;\n } else if (hasFillPattern) {\n ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n }\n\n if (hasStrokeGradient) {\n ctx.strokeStyle = this._strokeGradient;\n } else if (hasStrokePattern) {\n ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n }\n\n var lineDash = style.lineDash;\n var lineDashOffset = style.lineDashOffset;\n var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n var scale = this.getGlobalScale();\n path.setScale(scale[0], scale[1], this.segmentIgnoreThreshold); // Proxy context\n // Rebuild path in following 2 cases\n // 1. Path is dirty\n // 2. Path needs javascript implemented lineDash stroking.\n // In this case, lineDash information will not be saved in PathProxy\n\n if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n path.beginPath(ctx); // Setting line dash before build path\n\n if (lineDash && !ctxLineDash) {\n path.setLineDash(lineDash);\n path.setLineDashOffset(lineDashOffset);\n }\n\n this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n if (this.path) {\n this.__dirtyPath = false;\n }\n } else {\n // Replay path building\n ctx.beginPath();\n this.path.rebuildPath(ctx);\n }\n\n if (hasFill) {\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n path.fill(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.fill(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (hasStroke) {\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n path.stroke(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.stroke(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n // PENDING\n // Remove lineDash\n ctx.setLineDash([]);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n // Like in circle\n buildPath: function (ctx, shapeCfg, inBundle) {},\n createPathProxy: function () {\n this.path = new PathProxy();\n },\n getBoundingRect: function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n\n if (needsUpdateRect) {\n var path = this.path;\n\n if (!path) {\n // Create path on demand.\n path = this.path = new PathProxy();\n }\n\n if (this.__dirtyPath) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n }\n\n rect = path.getBoundingRect();\n }\n\n this._rect = rect;\n\n if (style.hasStroke()) {\n // Needs update rect with stroke lineWidth when\n // 1. Element changes scale or lineWidth\n // 2. Shape is changed\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n if (this.__dirty || needsUpdateRect) {\n rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n if (!style.hasFill()) {\n w = Math.max(w, this.strokeContainThreshold || 4);\n } // Consider line width\n // Line scale can't be 0;\n\n\n if (lineScale > 1e-10) {\n rectWithStroke.width += w / lineScale;\n rectWithStroke.height += w / lineScale;\n rectWithStroke.x -= w / lineScale / 2;\n rectWithStroke.y -= w / lineScale / 2;\n }\n } // Return rect with stroke\n\n\n return rectWithStroke;\n }\n\n return rect;\n },\n contain: function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n\n if (rect.contain(x, y)) {\n var pathData = this.path.data;\n\n if (style.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n if (lineScale > 1e-10) {\n // Only add extra hover lineWidth when there are no fill\n if (!style.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n\n if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n\n if (style.hasFill()) {\n return pathContain.contain(pathData, x, y);\n }\n }\n\n return false;\n },\n\n /**\n * @param {boolean} dirtyPath\n */\n dirty: function (dirtyPath) {\n if (dirtyPath == null) {\n dirtyPath = true;\n } // Only mark dirty, not mark clean\n\n\n if (dirtyPath) {\n this.__dirtyPath = dirtyPath;\n this._rect = null;\n }\n\n this.__dirty = this.__dirtyText = true;\n this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n if (this.__clipTarget) {\n this.__clipTarget.dirty();\n }\n },\n\n /**\n * Alias for animate('shape')\n * @param {boolean} loop\n */\n animateShape: function (loop) {\n return this.animate('shape', loop);\n },\n // Overwrite attrKV\n attrKV: function (key, value) {\n // FIXME\n if (key === 'shape') {\n this.setShape(value);\n this.__dirtyPath = true;\n this._rect = null;\n } else {\n Displayable.prototype.attrKV.call(this, key, value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setShape: function (key, value) {\n var shape = this.shape; // Path from string may not have shape\n\n if (shape) {\n if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n shape[name] = key[name];\n }\n }\n } else {\n shape[key] = value;\n }\n\n this.dirty(true);\n }\n\n return this;\n },\n getLineScale: function () {\n var m = this.transform; // Get the line scale.\n // Determinant of `m` means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n }\n};\n/**\n * 扩展一个 Path element, 比如星形,圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n var Sub = function (opts) {\n Path.call(this, opts);\n\n if (defaults.style) {\n // Extend default style\n this.style.extendFrom(defaults.style, false);\n } // Extend default shape\n\n\n var defaultShape = defaults.shape;\n\n if (defaultShape) {\n this.shape = this.shape || {};\n var thisShape = this.shape;\n\n for (var name in defaultShape) {\n if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n thisShape[name] = defaultShape[name];\n }\n }\n }\n\n defaults.init && defaults.init.call(this, opts);\n };\n\n zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n for (var name in defaults) {\n // Extending prototype values and methods\n if (name !== 'style' && name !== 'shape') {\n Sub.prototype[name] = defaults[name];\n }\n }\n\n return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;","var Pattern = function (image, repeat) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {image: ...}`, where this constructor will not be called.\n this.image = image;\n this.repeat = repeat; // Can be cloned\n\n this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.<Object>} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'radial', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0.5 : x;\n this.y = y == null ? 0.5 : y;\n this.r = r == null ? 0.5 : r; // Can be cloned\n\n this.type = 'radial'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.<number>|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.<number>}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.<number>}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.<number>}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.<number>}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","var ContextCachedBy = {\n NONE: 0,\n STYLE_BIND: 1,\n PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;","var env = require(\"../../core/env\");\n\n// Fix weird bug in some version of IE11 (like 11.0.9600.178**),\n// where exception \"unexpected call to method or property access\"\n// might be thrown when calling ctx.fill or ctx.stroke after a path\n// whose area size is zero is drawn and ctx.clip() is called and\n// shadowBlur is set. See #4572, #3112, #5777.\n// (e.g.,\n// ctx.moveTo(10, 10);\n// ctx.lineTo(20, 10);\n// ctx.closePath();\n// ctx.clip();\n// ctx.shadowBlur = 10;\n// ...\n// ctx.fill();\n// )\nvar shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];\n\nfunction _default(orignalBrush) {\n // version string can be: '11.0'\n return env.browser.ie && env.browser.version >= 11 ? function () {\n var clipPaths = this.__clipPaths;\n var style = this.style;\n var modified;\n\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n var shape = clipPath && clipPath.shape;\n var type = clipPath && clipPath.type;\n\n if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {\n for (var j = 0; j < shadowTemp.length; j++) {\n // It is save to put shadowTemp static, because shadowTemp\n // will be all modified each item brush called.\n shadowTemp[j][2] = style[shadowTemp[j][0]];\n style[shadowTemp[j][0]] = shadowTemp[j][1];\n }\n\n modified = true;\n break;\n }\n }\n }\n\n orignalBrush.apply(this, arguments);\n\n if (modified) {\n for (var j = 0; j < shadowTemp.length; j++) {\n style[shadowTemp[j][0]] = shadowTemp[j][2];\n }\n }\n } : orignalBrush;\n}\n\nmodule.exports = _default;","var SHADOW_PROPS = {\n 'shadowBlur': 1,\n 'shadowOffsetX': 1,\n 'shadowOffsetY': 1,\n 'textShadowBlur': 1,\n 'textShadowOffsetX': 1,\n 'textShadowOffsetY': 1,\n 'textBoxShadowBlur': 1,\n 'textBoxShadowOffsetX': 1,\n 'textBoxShadowOffsetY': 1\n};\n\nfunction _default(ctx, propName, value) {\n if (SHADOW_PROPS.hasOwnProperty(propName)) {\n return value *= ctx.dpr;\n }\n\n return value;\n}\n\nmodule.exports = _default;","var LRU = require(\"../../core/LRU\");\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n } else {\n return newImageOrSrc;\n }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n } else if (typeof newImageOrSrc === 'string') {\n // Image should not be loaded repeatly.\n if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n return image;\n } // Only when there is no existent image or existent image src\n // is different, this method is responsible for load.\n\n\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = {\n hostEl: hostEl,\n cb: cb,\n cbPayload: cbPayload\n };\n\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n } else {\n image = new Image();\n image.onload = image.onerror = imageOnLoad;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n image.src = image.__zrImageSrc = newImageOrSrc;\n }\n\n return image;\n } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n else {\n return newImageOrSrc;\n }\n}\n\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n\n cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;","var smoothSpline = require(\"./smoothSpline\");\n\nvar smoothBezier = require(\"./smoothBezier\");\n\nfunction buildPath(ctx, shape, closePath) {\n var points = shape.points;\n var smooth = shape.smooth;\n\n if (points && points.length >= 2) {\n if (smooth && smooth !== 'spline') {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n } else {\n if (smooth === 'spline') {\n points = smoothSpline(points, closePath);\n }\n\n ctx.moveTo(points[0][0], points[0][1]);\n\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n\n closePath && ctx.closePath();\n }\n}\n\nexports.buildPath = buildPath;","/**\n * @param {Object} ctx\n * @param {Object} shape\n * @param {number} shape.x\n * @param {number} shape.y\n * @param {number} shape.width\n * @param {number} shape.height\n * @param {number} shape.r\n */\nfunction buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4; // Convert width and height to positive for better borderRadius\n\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n } else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n } else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n } else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n } else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n } else {\n r1 = r2 = r3 = r4 = 0;\n }\n\n var total;\n\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n\nexports.buildPath = buildPath;","var _vector = require(\"../../core/vector\");\n\nvar v2Min = _vector.min;\nvar v2Max = _vector.max;\nvar v2Scale = _vector.scale;\nvar v2Distance = _vector.distance;\nvar v2Add = _vector.add;\nvar v2Clone = _vector.clone;\nvar v2Sub = _vector.sub;\n\n/**\n * 贝塞尔平滑曲线\n * @module zrender/shape/util/smoothBezier\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * 贝塞尔平滑曲线\n * @alias module:zrender/shape/util/smoothBezier\n * @param {Array} points 线段顶点数组\n * @param {number} smooth 平滑等级, 0-1\n * @param {boolean} isLoop\n * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内\n * 比如 [[0, 0], [100, 100]], 这个包围盒会与\n * 整个折线的包围盒做一个并集用来约束控制点。\n * @param {Array} 计算出来的控制点数组\n */\nfunction _default(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n } // 与指定的包围盒做并集\n\n\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n } else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n } else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n\n v2Sub(v, nextPoint, prevPoint); // use degree to scale the handle length\n\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n\n cps.push(cp0);\n cps.push(cp1);\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n}\n\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n var len = points.length;\n var ret = [];\n var distance = 0;\n\n for (var i = 1; i < len; i++) {\n distance += v2Distance(points[i - 1], points[i]);\n }\n\n var segs = distance / 2;\n segs = segs < len ? len : segs;\n\n for (var i = 0; i < segs; i++) {\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n var idx = Math.floor(pos);\n var w = pos - idx;\n var p0;\n var p1 = points[idx % len];\n var p2;\n var p3;\n\n if (!isLoop) {\n p0 = points[idx === 0 ? idx : idx - 1];\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n } else {\n p0 = points[(idx - 1 + len) % len];\n p2 = points[(idx + 1) % len];\n p3 = points[(idx + 2) % len];\n }\n\n var w2 = w * w;\n var w3 = w * w2;\n ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n }\n\n return ret;\n}\n\nmodule.exports = _default;","/**\n * Sub-pixel optimize for canvas rendering, prevent from blur\n * when rendering a thin vertical/horizontal line.\n */\nvar round = Math.round;\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x1`, `x2`, `y1`, `y2` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x1]\n * @param {number} [inputShape.y1]\n * @param {number} [inputShape.x2]\n * @param {number} [inputShape.y2]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\nfunction subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n\n if (!lineWidth) {\n return;\n }\n\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x`, `y`, `width`, `height` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x]\n * @param {number} [inputShape.y]\n * @param {number} [inputShape.width]\n * @param {number} [inputShape.height]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\n\nfunction subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n\n if (!lineWidth) {\n return;\n }\n\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth If `null`/`undefined`/`0`, do not optimize.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n } // Assure that (position + lineWidth / 2) is near integer edge,\n // otherwise line will be fuzzy in canvas.\n\n\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;","var _util = require(\"../../core/util\");\n\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar each = _util.each;\nvar normalizeCssArray = _util.normalizeCssArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\n\nvar textContain = require(\"../../contain/text\");\n\nvar roundRectHelper = require(\"./roundRect\");\n\nvar imageHelper = require(\"./image\");\n\nvar fixShadow = require(\"./fixShadow\");\n\nvar _constant = require(\"../constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\nvar DEFAULT_FONT = textContain.DEFAULT_FONT; // TODO: Have not support 'start', 'end' yet.\n\nvar VALID_TEXT_ALIGN = {\n left: 1,\n right: 1,\n center: 1\n};\nvar VALID_TEXT_VERTICAL_ALIGN = {\n top: 1,\n bottom: 1,\n middle: 1\n}; // Different from `STYLE_COMMON_PROPS` of `graphic/Style`,\n// the default value of shadowColor is `'transparent'`.\n\nvar SHADOW_STYLE_COMMON_PROPS = [['textShadowBlur', 'shadowBlur', 0], ['textShadowOffsetX', 'shadowOffsetX', 0], ['textShadowOffsetY', 'shadowOffsetY', 0], ['textShadowColor', 'shadowColor', 'transparent']];\nvar _tmpTextPositionResult = {};\nvar _tmpBoxPositionResult = {};\n/**\n * @param {module:zrender/graphic/Style} style\n * @return {module:zrender/graphic/Style} The input style.\n */\n\nfunction normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\n\nfunction normalizeStyle(style) {\n if (style) {\n style.font = textContain.makeFont(style);\n var textAlign = style.textAlign;\n textAlign === 'middle' && (textAlign = 'center');\n style.textAlign = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : 'left'; // Compatible with textBaseline.\n\n var textVerticalAlign = style.textVerticalAlign || style.textBaseline;\n textVerticalAlign === 'center' && (textVerticalAlign = 'middle');\n style.textVerticalAlign = textVerticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[textVerticalAlign] ? textVerticalAlign : 'top';\n var textPadding = style.textPadding;\n\n if (textPadding) {\n style.textPadding = normalizeCssArray(style.textPadding);\n }\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {string} text\n * @param {module:zrender/graphic/Style} style\n * @param {Object|boolean} [rect] {x, y, width, height}\n * If set false, rect text is not used.\n * @param {Element|module:zrender/graphic/helper/constant.WILL_BE_RESTORED} [prevEl] For ctx prop cache.\n */\n\n\nfunction renderText(hostEl, ctx, text, style, rect, prevEl) {\n style.rich ? renderRichText(hostEl, ctx, text, style, rect, prevEl) : renderPlainText(hostEl, ctx, text, style, rect, prevEl);\n} // Avoid setting to ctx according to prevEl if possible for\n// performance in scenarios of large amount text.\n\n\nfunction renderPlainText(hostEl, ctx, text, style, rect, prevEl) {\n 'use strict';\n\n var needDrawBg = needDrawBackground(style);\n var prevStyle;\n var checkCache = false;\n var cachedByMe = ctx.__attrCachedBy === ContextCachedBy.PLAIN_TEXT; // Only take and check cache for `Text` el, but not RectText.\n\n if (prevEl !== WILL_BE_RESTORED) {\n if (prevEl) {\n prevStyle = prevEl.style;\n checkCache = !needDrawBg && cachedByMe && prevStyle;\n } // Prevent from using cache in `Style::bind`, because of the case:\n // ctx property is modified by other properties than `Style::bind`\n // used, and Style::bind is called next.\n\n\n ctx.__attrCachedBy = needDrawBg ? ContextCachedBy.NONE : ContextCachedBy.PLAIN_TEXT;\n } // Since this will be restored, prevent from using these props to check cache in the next\n // entering of this method. But do not need to clear other cache like `Style::bind`.\n else if (cachedByMe) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var styleFont = style.font || DEFAULT_FONT; // PENDING\n // Only `Text` el set `font` and keep it (`RectText` will restore). So theoretically\n // we can make font cache on ctx, which can cache for text el that are discontinuous.\n // But layer save/restore needed to be considered.\n // if (styleFont !== ctx.__fontCache) {\n // ctx.font = styleFont;\n // if (prevEl !== WILL_BE_RESTORED) {\n // ctx.__fontCache = styleFont;\n // }\n // }\n\n if (!checkCache || styleFont !== (prevStyle.font || DEFAULT_FONT)) {\n ctx.font = styleFont;\n } // Use the final font from context-2d, because the final\n // font might not be the style.font when it is illegal.\n // But get `ctx.font` might be time consuming.\n\n\n var computedFont = hostEl.__computedFont;\n\n if (hostEl.__styleFont !== styleFont) {\n hostEl.__styleFont = styleFont;\n computedFont = hostEl.__computedFont = ctx.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign || 'left';\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY;\n\n if (needDrawBg || textPadding) {\n // Consider performance, do not call getTextWidth util necessary.\n var textWidth = textContain.getWidth(text, computedFont);\n var outerWidth = textWidth;\n textPadding && (outerWidth += textPadding[1] + textPadding[3]);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n needDrawBg && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n }\n } // Always set textAlign and textBase line, because it is difficute to calculate\n // textAlign from prevEl, and we dont sure whether textAlign will be reset if\n // font set happened.\n\n\n ctx.textAlign = textAlign; // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n ctx.textBaseline = 'middle'; // Set text opacity\n\n ctx.globalAlpha = style.opacity || 1; // Always set shadowBlur and shadowOffset to avoid leak from displayable.\n\n for (var i = 0; i < SHADOW_STYLE_COMMON_PROPS.length; i++) {\n var propItem = SHADOW_STYLE_COMMON_PROPS[i];\n var styleProp = propItem[0];\n var ctxProp = propItem[1];\n var val = style[styleProp];\n\n if (!checkCache || val !== prevStyle[styleProp]) {\n ctx[ctxProp] = fixShadow(ctx, ctxProp, val || propItem[2]);\n }\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n var textStrokeWidth = style.textStrokeWidth;\n var textStrokeWidthPrev = checkCache ? prevStyle.textStrokeWidth : null;\n var strokeWidthChanged = !checkCache || textStrokeWidth !== textStrokeWidthPrev;\n var strokeChanged = !checkCache || strokeWidthChanged || style.textStroke !== prevStyle.textStroke;\n var textStroke = getStroke(style.textStroke, textStrokeWidth);\n var textFill = getFill(style.textFill);\n\n if (textStroke) {\n if (strokeWidthChanged) {\n ctx.lineWidth = textStrokeWidth;\n }\n\n if (strokeChanged) {\n ctx.strokeStyle = textStroke;\n }\n }\n\n if (textFill) {\n if (!checkCache || style.textFill !== prevStyle.textFill) {\n ctx.fillStyle = textFill;\n }\n } // Optimize simply, in most cases only one line exists.\n\n\n if (textLines.length === 1) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[0], textX, textY);\n textFill && ctx.fillText(textLines[0], textX, textY);\n } else {\n for (var i = 0; i < textLines.length; i++) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[i], textX, textY);\n textFill && ctx.fillText(textLines[i], textX, textY);\n textY += lineHeight;\n }\n }\n}\n\nfunction renderRichText(hostEl, ctx, text, style, rect, prevEl) {\n // Do not do cache for rich text because of the complexity.\n // But `RectText` this will be restored, do not need to clear other cache like `Style::bind`.\n if (prevEl !== WILL_BE_RESTORED) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parseRichText(text, style);\n }\n\n drawRichText(hostEl, ctx, contentBlock, style, rect);\n}\n\nfunction drawRichText(hostEl, ctx, contentBlock, style, rect) {\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.textPadding;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign;\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n\n var xRight = xLeft + contentWidth;\n needDrawBackground(style) && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var usedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token;\n\n while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.textAlign || token.textAlign === 'left')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft, 'left');\n usedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n\n while (rightIndex >= 0 && (token = tokens[rightIndex], token.textAlign === 'right')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXRight, 'right');\n usedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n } // The other tokens are placed as textAlign 'center' if there is enough space.\n\n\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - usedWidth) / 2;\n\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex]; // Consider width specified by user, use 'center' rather than 'left'.\n\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center');\n lineXLeft += token.width;\n leftIndex++;\n }\n\n lineTop += lineHeight;\n }\n}\n\nfunction applyTextRotation(ctx, style, rect, x, y) {\n // textRotation only apply in RectText.\n if (rect && style.textRotation) {\n var origin = style.textOrigin;\n\n if (origin === 'center') {\n x = rect.width / 2 + rect.x;\n y = rect.height / 2 + rect.y;\n } else if (origin) {\n x = origin[0] + rect.x;\n y = origin[1] + rect.y;\n }\n\n ctx.translate(x, y); // Positive: anticlockwise\n\n ctx.rotate(-style.textRotation);\n ctx.translate(-x, -y);\n }\n}\n\nfunction placeToken(hostEl, ctx, token, style, lineHeight, lineTop, x, textAlign) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text; // 'ctx.textBaseline' is always set as 'middle', for sake of\n // the bias of \"Microsoft YaHei\".\n\n var textVerticalAlign = token.textVerticalAlign;\n var y = lineTop + lineHeight / 2;\n\n if (textVerticalAlign === 'top') {\n y = lineTop + token.height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n\n !token.isLineHolder && needDrawBackground(tokenStyle) && drawBackground(hostEl, ctx, tokenStyle, textAlign === 'right' ? x - token.width : textAlign === 'center' ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);\n var textPadding = token.textPadding;\n\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[2] - token.textHeight / 2;\n }\n\n setCtx(ctx, 'shadowBlur', retrieve3(tokenStyle.textShadowBlur, style.textShadowBlur, 0));\n setCtx(ctx, 'shadowColor', tokenStyle.textShadowColor || style.textShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', retrieve3(tokenStyle.textShadowOffsetX, style.textShadowOffsetX, 0));\n setCtx(ctx, 'shadowOffsetY', retrieve3(tokenStyle.textShadowOffsetY, style.textShadowOffsetY, 0));\n setCtx(ctx, 'textAlign', textAlign); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n setCtx(ctx, 'textBaseline', 'middle');\n setCtx(ctx, 'font', token.font || DEFAULT_FONT);\n var textStroke = getStroke(tokenStyle.textStroke || style.textStroke, textStrokeWidth);\n var textFill = getFill(tokenStyle.textFill || style.textFill);\n var textStrokeWidth = retrieve2(tokenStyle.textStrokeWidth, style.textStrokeWidth); // Fill after stroke so the outline will not cover the main part.\n\n if (textStroke) {\n setCtx(ctx, 'lineWidth', textStrokeWidth);\n setCtx(ctx, 'strokeStyle', textStroke);\n ctx.strokeText(token.text, x, y);\n }\n\n if (textFill) {\n setCtx(ctx, 'fillStyle', textFill);\n ctx.fillText(token.text, x, y);\n }\n}\n\nfunction needDrawBackground(style) {\n return !!(style.textBackgroundColor || style.textBorderWidth && style.textBorderColor);\n} // style: {textBackgroundColor, textBorderWidth, textBorderColor, textBorderRadius, text}\n// shape: {x, y, width, height}\n\n\nfunction drawBackground(hostEl, ctx, style, x, y, width, height) {\n var textBackgroundColor = style.textBackgroundColor;\n var textBorderWidth = style.textBorderWidth;\n var textBorderColor = style.textBorderColor;\n var isPlainBg = isString(textBackgroundColor);\n setCtx(ctx, 'shadowBlur', style.textBoxShadowBlur || 0);\n setCtx(ctx, 'shadowColor', style.textBoxShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', style.textBoxShadowOffsetX || 0);\n setCtx(ctx, 'shadowOffsetY', style.textBoxShadowOffsetY || 0);\n\n if (isPlainBg || textBorderWidth && textBorderColor) {\n ctx.beginPath();\n var textBorderRadius = style.textBorderRadius;\n\n if (!textBorderRadius) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, {\n x: x,\n y: y,\n width: width,\n height: height,\n r: textBorderRadius\n });\n }\n\n ctx.closePath();\n }\n\n if (isPlainBg) {\n setCtx(ctx, 'fillStyle', textBackgroundColor);\n\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.fill();\n }\n } else if (isObject(textBackgroundColor)) {\n var image = textBackgroundColor.image;\n image = imageHelper.createOrUpdateImage(image, null, hostEl, onBgImageLoaded, textBackgroundColor);\n\n if (image && imageHelper.isImageReady(image)) {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n\n if (textBorderWidth && textBorderColor) {\n setCtx(ctx, 'lineWidth', textBorderWidth);\n setCtx(ctx, 'strokeStyle', textBorderColor);\n\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.stroke();\n }\n }\n}\n\nfunction onBgImageLoaded(image, textBackgroundColor) {\n // Replace image, so that `contain/text.js#parseRichText`\n // will get correct result in next tick.\n textBackgroundColor.image = image;\n}\n\nfunction getBoxPosition(out, hostEl, style, rect) {\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.textAlign;\n var textVerticalAlign = style.textVerticalAlign; // Text position represented by coord\n\n if (rect) {\n var textPosition = style.textPosition;\n\n if (textPosition instanceof Array) {\n // Percent\n baseX = rect.x + parsePercent(textPosition[0], rect.width);\n baseY = rect.y + parsePercent(textPosition[1], rect.height);\n } else {\n var res = hostEl && hostEl.calculateTextPosition ? hostEl.calculateTextPosition(_tmpTextPositionResult, style, rect) : textContain.calculateTextPosition(_tmpTextPositionResult, style, rect);\n baseX = res.x;\n baseY = res.y; // Default align and baseline when has textPosition\n\n textAlign = textAlign || res.textAlign;\n textVerticalAlign = textVerticalAlign || res.textVerticalAlign;\n } // textOffset is only support in RectText, otherwise\n // we have to adjust boundingRect for textOffset.\n\n\n var textOffset = style.textOffset;\n\n if (textOffset) {\n baseX += textOffset[0];\n baseY += textOffset[1];\n }\n }\n\n out = out || {};\n out.baseX = baseX;\n out.baseY = baseY;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n\nfunction setCtx(ctx, prop, value) {\n ctx[prop] = fixShadow(ctx, prop, value);\n return ctx[prop];\n}\n/**\n * @param {string} [stroke] If specified, do not check style.textStroke.\n * @param {string} [lineWidth] If specified, do not check style.textStroke.\n * @param {number} style\n */\n\n\nfunction getStroke(stroke, lineWidth) {\n return stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none' ? null // TODO pattern and gradient?\n : stroke.image || stroke.colorStops ? '#000' : stroke;\n}\n\nfunction getFill(fill) {\n return fill == null || fill === 'none' ? null // TODO pattern and gradient?\n : fill.image || fill.colorStops ? '#000' : fill;\n}\n\nfunction parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n\n return parseFloat(value);\n }\n\n return value;\n}\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n/**\n * @param {string} text\n * @param {module:zrender/Style} style\n * @return {boolean}\n */\n\n\nfunction needDrawText(text, style) {\n return text != null && (text || style.textBackgroundColor || style.textBorderWidth && style.textBorderColor || style.textPadding);\n}\n\nexports.normalizeTextStyle = normalizeTextStyle;\nexports.renderText = renderText;\nexports.getBoxPosition = getBoxPosition;\nexports.getStroke = getStroke;\nexports.getFill = getFill;\nexports.parsePercent = parsePercent;\nexports.needDrawText = needDrawText;","var textHelper = require(\"../helper/text\");\n\nvar BoundingRect = require(\"../../core/BoundingRect\");\n\nvar _constant = require(\"../constant\");\n\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\n\n/**\n * Mixin for drawing text in a element bounding rect\n * @module zrender/mixin/RectText\n */\nvar tmpRect = new BoundingRect();\n\nvar RectText = function () {};\n\nRectText.prototype = {\n constructor: RectText,\n\n /**\n * Draw text in a rect with specified position.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Object} rect Displayable rect\n */\n drawRectText: function (ctx, rect) {\n var style = this.style;\n rect = style.textRect || rect; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!textHelper.needDrawText(text, style)) {\n return;\n } // FIXME\n // Do not provide prevEl to `textHelper.renderText` for ctx prop cache,\n // but use `ctx.save()` and `ctx.restore()`. Because the cache for rect\n // text propably break the cache for its host elements.\n\n\n ctx.save(); // Transform rect to view space\n\n var transform = this.transform;\n\n if (!style.transformText) {\n if (transform) {\n tmpRect.copy(rect);\n tmpRect.applyTransform(transform);\n rect = tmpRect;\n }\n } else {\n this.setTransform(ctx);\n } // transformText and textRotation can not be used at the same time.\n\n\n textHelper.renderText(this, ctx, text, style, rect, WILL_BE_RESTORED);\n ctx.restore();\n }\n};\nvar _default = RectText;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆弧\n * @module zrender/graphic/shape/Arc\n */\nvar _default = Path.extend({\n type: 'arc',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar vec2 = require(\"../../core/vector\");\n\nvar _curve = require(\"../../core/curve\");\n\nvar quadraticSubdivide = _curve.quadraticSubdivide;\nvar cubicSubdivide = _curve.cubicSubdivide;\nvar quadraticAt = _curve.quadraticAt;\nvar cubicAt = _curve.cubicAt;\nvar quadraticDerivativeAt = _curve.quadraticDerivativeAt;\nvar cubicDerivativeAt = _curve.cubicDerivativeAt;\n\n/**\n * 贝塞尔曲线\n * @module zrender/shape/BezierCurve\n */\nvar out = [];\n\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n\n if (cpx2 === null || cpy2 === null) {\n return [(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)];\n } else {\n return [(isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)];\n }\n}\n\nvar _default = Path.extend({\n type: 'bezier-curve',\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n cpx1: 0,\n cpy1: 0,\n // cpx2: 0,\n // cpy2: 0\n // Curve show percent, for animating\n percent: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n\n if (percent === 0) {\n return;\n }\n\n ctx.moveTo(x1, y1);\n\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n } else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n },\n\n /**\n * Get point at percent\n * @param {number} t\n * @return {Array.<number>}\n */\n pointAt: function (t) {\n return someVectorAt(this.shape, t, false);\n },\n\n /**\n * Get tangent at percent\n * @param {number} t\n * @return {Array.<number>}\n */\n tangentAt: function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆形\n * @module zrender/shape/Circle\n */\nvar _default = Path.extend({\n type: 'circle',\n shape: {\n cx: 0,\n cy: 0,\n r: 0\n },\n buildPath: function (ctx, shape, inBundle) {\n // Better stroking in ShapeBundle\n // Always do it may have performence issue ( fill may be 2x more cost)\n if (inBundle) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n } // else {\n // if (ctx.allocate && !ctx.data.length) {\n // ctx.allocate(ctx.CMD_MEM_SIZE.A);\n // }\n // }\n // Better stroking in ShapeBundle\n // ctx.moveTo(shape.cx + shape.r, shape.cy);\n\n\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 椭圆形状\n * @module zrender/graphic/shape/Ellipse\n */\nvar _default = Path.extend({\n type: 'ellipse',\n shape: {\n cx: 0,\n cy: 0,\n rx: 0,\n ry: 0\n },\n buildPath: function (ctx, shape) {\n var k = 0.5522848;\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.rx;\n var b = shape.ry;\n var ox = a * k; // 水平控制点偏移量\n\n var oy = b * k; // 垂直控制点偏移量\n // 从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线\n\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar _subPixelOptimize = require(\"../helper/subPixelOptimize\");\n\nvar subPixelOptimizeLine = _subPixelOptimize.subPixelOptimizeLine;\n\n/**\n * 直线\n * @module zrender/graphic/shape/Line\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n type: 'line',\n shape: {\n // Start point\n x1: 0,\n y1: 0,\n // End point\n x2: 0,\n y2: 0,\n percent: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n\n if (this.subPixelOptimize) {\n subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n x1 = subPixelOptimizeOutputShape.x1;\n y1 = subPixelOptimizeOutputShape.y1;\n x2 = subPixelOptimizeOutputShape.x2;\n y2 = subPixelOptimizeOutputShape.y2;\n } else {\n x1 = shape.x1;\n y1 = shape.y1;\n x2 = shape.x2;\n y2 = shape.y2;\n }\n\n var percent = shape.percent;\n\n if (percent === 0) {\n return;\n }\n\n ctx.moveTo(x1, y1);\n\n if (percent < 1) {\n x2 = x1 * (1 - percent) + x2 * percent;\n y2 = y1 * (1 - percent) + y2 * percent;\n }\n\n ctx.lineTo(x2, y2);\n },\n\n /**\n * Get point at percent\n * @param {number} percent\n * @return {Array.<number>}\n */\n pointAt: function (p) {\n var shape = this.shape;\n return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * 多边形\n * @module zrender/shape/Polygon\n */\nvar _default = Path.extend({\n type: 'polygon',\n shape: {\n points: null,\n smooth: false,\n smoothConstraint: null\n },\n buildPath: function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, true);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * @module zrender/graphic/shape/Polyline\n */\nvar _default = Path.extend({\n type: 'polyline',\n shape: {\n points: null,\n smooth: false,\n smoothConstraint: null\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar roundRectHelper = require(\"../helper/roundRect\");\n\nvar _subPixelOptimize = require(\"../helper/subPixelOptimize\");\n\nvar subPixelOptimizeRect = _subPixelOptimize.subPixelOptimizeRect;\n\n/**\n * 矩形\n * @module zrender/graphic/shape/Rect\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n type: 'rect',\n shape: {\n // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4\n // r缩写为1 相当于 [1, 1, 1, 1]\n // r缩写为[1] 相当于 [1, 1, 1, 1]\n // r缩写为[1, 2] 相当于 [1, 2, 1, 2]\n // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]\n r: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n\n if (this.subPixelOptimize) {\n subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = subPixelOptimizeOutputShape.x;\n y = subPixelOptimizeOutputShape.y;\n width = subPixelOptimizeOutputShape.width;\n height = subPixelOptimizeOutputShape.height;\n subPixelOptimizeOutputShape.r = shape.r;\n shape = subPixelOptimizeOutputShape;\n } else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, shape);\n }\n\n ctx.closePath();\n return;\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n type: 'ring',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n r0: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar fixClipWithShadow = require(\"../helper/fixClipWithShadow\");\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n type: 'sector',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n ctx.lineTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var Animator = require(\"../animation/Animator\");\n\nvar logError = require(\"../core/log\");\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar isFunction = _util.isFunction;\nvar isObject = _util.isObject;\nvar isArrayLike = _util.isArrayLike;\nvar indexOf = _util.indexOf;\n\n/**\n * @alias module:zrender/mixin/Animatable\n * @constructor\n */\nvar Animatable = function () {\n /**\n * @type {Array.<module:zrender/animation/Animator>}\n * @readOnly\n */\n this.animators = [];\n};\n\nAnimatable.prototype = {\n constructor: Animatable,\n\n /**\n * 动画\n *\n * @param {string} path The path to fetch value from object, like 'a.b.c'.\n * @param {boolean} [loop] Whether to loop animation.\n * @return {module:zrender/animation/Animator}\n * @example:\n * el.animate('style', false)\n * .when(1000, {x: 10} )\n * .done(function(){ // Animation done })\n * .start()\n */\n animate: function (path, loop) {\n var target;\n var animatingShape = false;\n var el = this;\n var zr = this.__zr;\n\n if (path) {\n var pathSplitted = path.split('.');\n var prop = el; // If animating shape\n\n animatingShape = pathSplitted[0] === 'shape';\n\n for (var i = 0, l = pathSplitted.length; i < l; i++) {\n if (!prop) {\n continue;\n }\n\n prop = prop[pathSplitted[i]];\n }\n\n if (prop) {\n target = prop;\n }\n } else {\n target = el;\n }\n\n if (!target) {\n logError('Property \"' + path + '\" is not existed in element ' + el.id);\n return;\n }\n\n var animators = el.animators;\n var animator = new Animator(target, loop);\n animator.during(function (target) {\n el.dirty(animatingShape);\n }).done(function () {\n // FIXME Animator will not be removed if use `Animator#stop` to stop animation\n animators.splice(indexOf(animators, animator), 1);\n });\n animators.push(animator); // If animate after added to the zrender\n\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n\n return animator;\n },\n\n /**\n * 停止动画\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stopAnimation: function (forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n\n for (var i = 0; i < len; i++) {\n animators[i].stop(forwardToLast);\n }\n\n animators.length = 0;\n return this;\n },\n\n /**\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n * @param {Object} target\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n * @param {Function} [forceAnimate] Prevent stop animation and callback\n * immediently when target values are the same as current values.\n *\n * @example\n * // Animate position\n * el.animateTo({\n * position: [10, 10]\n * }, function () { // done })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing\n * el.animateTo({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100, 'cubicOut', function () { // done })\n */\n // TODO Return animation key\n animateTo: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate);\n },\n\n /**\n * Animate from the target state to current state.\n * The params and the return value are the same as `this.animateTo`.\n */\n animateFrom: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate, true);\n }\n};\n\nfunction animateTo(animatable, target, time, delay, easing, callback, forceAnimate, reverse) {\n // animateTo(target, time, easing, callback);\n if (isString(delay)) {\n callback = easing;\n easing = delay;\n delay = 0;\n } // animateTo(target, time, delay, callback);\n else if (isFunction(easing)) {\n callback = easing;\n easing = 'linear';\n delay = 0;\n } // animateTo(target, time, callback);\n else if (isFunction(delay)) {\n callback = delay;\n delay = 0;\n } // animateTo(target, callback)\n else if (isFunction(time)) {\n callback = time;\n time = 500;\n } // animateTo(target)\n else if (!time) {\n time = 500;\n } // Stop all previous animations\n\n\n animatable.stopAnimation();\n animateToShallow(animatable, '', animatable, target, time, delay, reverse); // Animators may be removed immediately after start\n // if there is nothing to animate\n\n var animators = animatable.animators.slice();\n var count = animators.length;\n\n function done() {\n count--;\n\n if (!count) {\n callback && callback();\n }\n } // No animators. This should be checked before animators[i].start(),\n // because 'done' may be executed immediately if no need to animate.\n\n\n if (!count) {\n callback && callback();\n } // Start after all animators created\n // Incase any animator is done immediately when all animation properties are not changed\n\n\n for (var i = 0; i < animators.length; i++) {\n animators[i].done(done).start(easing, forceAnimate);\n }\n}\n/**\n * @param {string} path=''\n * @param {Object} source=animatable\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {boolean} [reverse] If `true`, animate\n * from the `target` to current state.\n *\n * @example\n * // Animate position\n * el._animateToShallow({\n * position: [10, 10]\n * })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms\n * el._animateToShallow({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100)\n */\n\n\nfunction animateToShallow(animatable, path, source, target, time, delay, reverse) {\n var objShallow = {};\n var propertyCount = 0;\n\n for (var name in target) {\n if (!target.hasOwnProperty(name)) {\n continue;\n }\n\n if (source[name] != null) {\n if (isObject(target[name]) && !isArrayLike(target[name])) {\n animateToShallow(animatable, path ? path + '.' + name : name, source[name], target[name], time, delay, reverse);\n } else {\n if (reverse) {\n objShallow[name] = source[name];\n setAttrByPath(animatable, path, name, target[name]);\n } else {\n objShallow[name] = target[name];\n }\n\n propertyCount++;\n }\n } else if (target[name] != null && !reverse) {\n setAttrByPath(animatable, path, name, target[name]);\n }\n }\n\n if (propertyCount > 0) {\n animatable.animate(path, false).when(time == null ? 500 : time, objShallow).delay(delay || 0);\n }\n}\n\nfunction setAttrByPath(el, path, name, value) {\n // Attr directly if not has property\n // FIXME, if some property not needed for element ?\n if (!path) {\n el.attr(name, value);\n } else {\n // Only support set shape or style\n var props = {};\n props[path] = {};\n props[path][name] = value;\n el.attr(props);\n }\n}\n\nvar _default = Animatable;\nmodule.exports = _default;","// TODO Draggable for group\n// FIXME Draggable on element which has parent rotation or scale\nfunction Draggable() {\n this.on('mousedown', this._dragStart, this);\n this.on('mousemove', this._drag, this);\n this.on('mouseup', this._dragEnd, this); // `mosuemove` and `mouseup` can be continue to fire when dragging.\n // See [Drag outside] in `Handler.js`. So we do not need to trigger\n // `_dragEnd` when globalout. That would brings better user experience.\n // this.on('globalout', this._dragEnd, this);\n // this._dropTarget = null;\n // this._draggingTarget = null;\n // this._x = 0;\n // this._y = 0;\n}\n\nDraggable.prototype = {\n constructor: Draggable,\n _dragStart: function (e) {\n var draggingTarget = e.target; // Find if there is draggable in the ancestor\n\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent;\n }\n\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event);\n }\n },\n _drag: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.dispatchToElement(param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event);\n }\n\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n },\n _dragEnd: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n\n this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event);\n\n if (this._dropTarget) {\n this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event);\n }\n\n this._draggingTarget = null;\n this._dropTarget = null;\n }\n};\n\nfunction param(target, e) {\n return {\n target: target,\n topTarget: e && e.topTarget\n };\n}\n\nvar _default = Draggable;\nmodule.exports = _default;","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\nmodule.exports = _default;","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.<number>}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.<number>}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.<number>}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.<number>}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.<number>}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.<number>} target.origin\n * @param {number} target.rotation\n * @param {Array.<number>} target.position\n * @param {Array.<number>} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0],\n 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1],\n 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1],\n 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1],\n 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1],\n 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1],\n 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1],\n 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1],\n 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1],\n 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1],\n 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1],\n 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1],\n 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1],\n 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1],\n 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1],\n 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1],\n 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1],\n 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1],\n 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1],\n 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1],\n 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1],\n 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1],\n 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1],\n 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1],\n 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1],\n 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1],\n 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1],\n 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1],\n 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1],\n 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1],\n 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1],\n 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1],\n 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1],\n 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1],\n 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1],\n 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1],\n 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1],\n 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1],\n 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1],\n 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1],\n 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1],\n 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1],\n 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1],\n 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1],\n 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1],\n 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1],\n 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1],\n 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1],\n 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1],\n 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1],\n 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1],\n 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1],\n 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1],\n 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1],\n 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1],\n 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1],\n 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1],\n 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1],\n 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1],\n 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1],\n 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1],\n 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1],\n 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1],\n 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1],\n 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1],\n 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1],\n 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1],\n 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1],\n 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1],\n 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1],\n 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1],\n 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1],\n 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1],\n 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1],\n 'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n // Clamp to integer 0 .. 360.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n // int or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n\n return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n // float or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n\n return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n\n if (h * 2 < 1) {\n return m2;\n }\n\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n\n return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\n\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n // Reuse removed array\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.<number>} out\n * @return {Array.<number>}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n\n if (cached) {\n return copyRgba(rgbaArr, cached);\n } // colorStr may be not string\n\n\n colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } // #abc and #abc123 syntax.\n\n\n if (str.charAt(0) === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n\n return;\n }\n\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n alpha = parseCssFloat(params.pop());\n // jshint ignore:line\n // Fall through.\n\n case 'rgb':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n default:\n return;\n }\n }\n\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\n/**\n * @param {Array.<number>} hsla\n * @param {Array.<number>} rgba\n * @return {Array.<number>} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n\n return rgba;\n}\n/**\n * @param {Array.<number>} rgba\n * @return {Array.<number>} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n } // RGB from 0 to 255\n\n\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B); // Min. value of RGB\n\n var vMax = Math.max(R, G, B); // Max. value of RGB\n\n var delta = vMax - vMin; // Delta RGB value\n\n var L = (vMax + vMin) / 2;\n var H;\n var S; // HSL results from 0 to 1\n\n if (delta === 0) {\n H = 0;\n S = 0;\n } else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n } else {\n S = delta / (2 - vMax - vMin);\n }\n\n var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n if (R === vMax) {\n H = deltaB - deltaG;\n } else if (G === vMax) {\n H = 1 / 3 + deltaR - deltaB;\n } else if (B === vMax) {\n H = 2 / 3 + deltaG - deltaR;\n }\n\n if (H < 0) {\n H += 1;\n }\n\n if (H > 1) {\n H -= 1;\n }\n }\n\n var hsla = [H * 360, S, L];\n\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n\n return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n var colorArr = parse(color);\n\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n } else {\n colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n }\n\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n } else if (color[i] < 0) {\n colorArr[i] = 0;\n }\n }\n\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n var colorArr = parse(color);\n\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<Array.<number>>} colors List of rgba color array\n * @param {Array.<number>} [out] Mapped gba color array\n * @return {Array.<number>} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<string>} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n return fullOutput ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n color = parse(color);\n\n if (color) {\n color = rgba2hsla(color);\n h != null && (color[0] = clampCssAngle(h));\n s != null && (color[1] = parseCssFloat(s));\n l != null && (color[2] = parseCssFloat(l));\n return stringify(hsla2rgba(color), 'rgba');\n }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n color = parse(color);\n\n if (color && alpha != null) {\n color[3] = clampCssFloat(alpha);\n return stringify(color, 'rgba');\n }\n}\n/**\n * @param {Array.<number>} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n\n return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of <!DOCTYPE svg> is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support <style>...</style> in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.<number>} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.1';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '<br>' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","staticRenderFns","raf","requestAnimationFrame","callback","window","webkitRequestAnimationFrame","mozRequestAnimationFrame","setTimeout","bind","caf","cancelAnimationFrame","id","webkitCancelAnimationFrame","mozCancelAnimationFrame","clearTimeout","createStyles","styleText","style","document","createElement","type","styleSheet","cssText","appendChild","createTextNode","querySelector","body","tagName","props","elem","Object","keys","forEach","key","getComputedStyle","prop","pseudo","computedStyle","display","getRenderInfo","documentElement","contains","detached","rendered","current","parentNode","css","total","addListener","__resize_mutation_handler__","handleMutation","listeners","__resize_listeners__","ResizeObserver","offsetWidth","offsetHeight","ro","__resize_observer_triggered__","runCallbacks","__resize_observer__","observe","attachEvent","addEventListener","__resize_legacy_resize_handler__","initTriggers","__resize_rendered__","MutationObserver","mo","attributes","childList","characterData","subtree","__resize_mutation_observer__","push","removeListener","detachEvent","removeEventListener","splice","indexOf","length","unobserve","disconnect","handleScroll","removeChild","__resize_triggers__","triggers","getUpdatedSize","width","height","__resize_last__","resetTriggers","__resize_raf__","updated","call","position","__resize_old_position__","className","expand","expandChild","contract","scrollWidth","csw","scrollHeight","csh","eow","eoh","esw","esh","scrollLeft","scrollTop","EVENTS","ZR_EVENTS","INIT_TRIGGERS","REWATCH_TRIGGERS","options","theme","String","initOptions","group","autoresize","Boolean","watchShallow","manualUpdate","data","lastArea","watch","chart","methods","mergeOptions","notMerge","lazyUpdate","manualOptions","delegateMethod","init","appendData","params","resize","dispatchAction","payload","convertToPixel","finder","value","convertFromPixel","containPixel","showLoading","hideLoading","getDataURL","getConnectedDataURL","clear","dispose","name","args","delegateGet","methodName","getArea","$el","setOption","event","on","$emit","getZr","__resizeHandler","leading","defineProperties","configurable","get","isDisposed","computedOptions","initOptionsWatcher","__unwatchOptions","$watch","val","oldVal","deep","destroy","refresh","created","mounted","activated","destroyed","connect","map","registerMap","mapName","geoJSON","specialAreas","registerTheme","graphic","component","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","exports","module","utils","settle","buildURL","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","Authorization","btoa","open","method","toUpperCase","url","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","responseData","responseType","response","responseText","statusText","onerror","ontimeout","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","toLowerCase","setRequestHeader","e","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","Axios","defaults","createInstance","defaultConfig","instance","prototype","extend","axios","create","instanceConfig","merge","Cancel","CancelToken","isCancel","all","promises","spread","message","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","shift","handlers","use","eject","fn","enhanceError","code","error","Error","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","baseURL","transformRequest","common","adapter","transformResponse","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","getDefaultAdapter","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","JSON","stringify","parse","maxContentLength","thisArg","Array","i","apply","encode","encodeURIComponent","replace","serializedParams","parts","isArray","v","isDate","toISOString","join","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","match","RegExp","decodeURIComponent","remove","now","test","originURL","msie","navigator","userAgent","urlParsingNode","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","trim","substr","arr","FormData","result","ArrayBuffer","isView","isFunction","pipe","URLSearchParams","str","product","obj","l","hasOwnProperty","assignValue","a","b","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","len","charCodeAt","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","maxChunkLength","len2","base64","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","typedArraySupport","proto","foo","setPrototypeOf","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","string","isEncoding","actual","slice","fromArrayLike","array","arrayView","copy","byteOffset","numberIsNaN","SlowBuffer","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parseInt","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","console","defineProperty","enumerable","poolSize","allocUnsafeSlow","_isBuffer","compare","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","Infinity","leadSurrogate","byteArray","hi","lo","src","dst","constructor","alphabet","table","i16","root","factory","modules","installedModules","moduleId","d","getter","o","r","toStringTag","t","mode","__esModule","ns","object","property","p","s","select","element","selectedText","nodeName","focus","isReadOnly","hasAttribute","setSelectionRange","removeAttribute","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","E","ctx","once","self","listener","off","_","emit","evtArr","evts","liveEvents","TinyEmitter","is","delegate","listen","node","listenNode","nodeList","listenNodeList","listenSelector","selector","HTMLElement","nodeType","closest","_delegate","useCapture","listenerFn","elements","querySelectorAll","delegateTarget","DOCUMENT_NODE_TYPE","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","src_select","select_default","_typeof","iterator","_createClass","descriptor","writable","Constructor","protoProps","staticProps","_classCallCheck","clipboard_action_ClipboardAction","ClipboardAction","resolveOptions","initSelection","action","container","emitter","text","trigger","selectFake","selectTarget","_this","isRTL","getAttribute","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","fontSize","border","padding","margin","yPosition","pageYOffset","top","copyText","succeeded","execCommand","err","handleResult","clearSelection","activeElement","blur","_action","_target","clipboard_action","tiny_emitter","tiny_emitter_default","listen_default","clipboard_typeof","clipboard_createClass","clipboard_classCallCheck","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","__proto__","clipboard_Clipboard","_Emitter","Clipboard","getPrototypeOf","listenClick","defaultAction","defaultTarget","defaultText","_this2","onClick","currentTarget","clipboardAction","getAttributeValue","actions","support","queryCommandSupported","suffix","attribute","f","u","default","zrUtil","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","ecModel","api","coordinateSystems","each","creater","update","coordSys","getCoordinateSystems","register","coordinateSystemCreator","_default","echartsAPIList","ExtensionAPI","chartInstance","_symbol","createSymbol","_number","parsePercent","_labelHelper","getDefaultLabel","SymbolClz","idx","seriesScope","Group","updateData","symbolProto","getSymbolSize","symbolSize","getItemVisual","getScale","driftSymbol","dx","dy","drift","_createSymbol","symbolType","keepAspect","removeAll","color","symbolPath","attr","z2","culling","scale","_symbolType","stopSymbolAnimation","toLastFrame","childAt","stopAnimation","getSymbolPath","highlight","downplay","setZ","zlevel","z","setDraggable","draggable","cursor","silent","seriesModel","hostModel","isInit","updateProps","_updateCommon","fadeIn","opacity","initProps","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","incremental","useHoverLayer","__symbolOriginalScale","ratio","emphasisOpt","animateTo","useStyle","strokeNoScale","setStyle","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","itemStyle","hoverItemStyle","symbolOffset","labelModel","hoverLabelModel","hoverAnimation","cursorStyle","hasItemOption","itemModel","getItemModel","getModel","getItemStyle","getShallow","elStyle","symbolRotate","PI","setColor","symbolInnerColor","liftZ","z2Origin","__z2Origin","useNameLabel","getLabelDefaultText","opt","getName","setLabelStyle","labelFetcher","labelDataIndex","isRectText","autoColor","hoverStyle","isAnimationEnabled","setHoverStyle","fadeOut","cb","keepLabel","dataIndex","inherits","_util","SymbolDraw","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","point","isNaN","isIgnore","clipShape","contain","normalizeUpdateOpt","makeSeriesScope","oldData","_data","SymbolCtor","diff","newIdx","getItemLayout","symbolEl","setItemGraphicEl","oldIdx","getItemGraphicEl","el","execute","isPersistent","updateLayout","eachItemGraphicEl","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","isGroup","traverse","enableAnimation","round","createGridClipPath","cartesian","hasAnimation","rect","isHorizontal","getBaseAxis","lineWidth","floor","clipPath","Rect","shape","createPolarClipPath","polar","sectorArea","Sector","cx","cy","r0","startAngle","endAngle","clockwise","createClipPath","List","createDimensions","_sourceType","SOURCE_FORMAT_ORIGINAL","_dimensionHelper","getDimensionTypeByAxis","_model","getDataItemValue","CoordinateSystem","_referHelper","getCoordSysInfoBySeries","Source","_dataStackHelper","enableDataStack","_sourceHelper","makeSeriesEncodeForAxisCoordSys","createListFromArray","seriesDataToSource","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","coordSysDims","dim","dimInfo","axisModel","axisMap","axisType","getDimensionsInfo","dimensions","firstCategoryDimIndex","hasNameEncode","dimInfoList","coordDimensions","generateCoord","encodeDefaulter","useEncodeDefaulter","curry","dimIndex","coordDim","categoryAxisModel","categoryAxisMap","ordinalMeta","getOrdinalMeta","otherDims","itemName","stackCalculationInfo","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","defaultDimValueGetter","initData","sourceFormat","sampleItem","firstDataNotNull","makeInner","inner","fields","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","progressive","_dataProvider","retrieveRawValue","labelDims","mapDimension","vals","echarts","visualSymbol","layoutPoints","dataSample","registerVisual","registerLayout","registerProcessor","PRIORITY","PROCESSOR","STATISTIC","_config","__DEV__","SeriesModel","dependencies","getInitialData","option","getSource","defaultOption","coordinateSystem","legendHoverLink","clip","label","lineStyle","step","smooth","smoothMonotone","symbol","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","hoverLayerThreshold","_bbox","fromPoints","lineAnimationDiff","modelUtil","_poly","Polyline","Polygon","ChartView","_helper","prepareDataCoordInfo","getStackedOnPoint","_createClipPathFromCoordSys","isPointsSame","points1","points2","p1","p2","getBoundingDiff","min1","max1","min2","max2","abs","getSmooth","getStackedOnPoints","dataCoordInfo","valueDim","points","count","turnPointsIntoStep","stepTurnAt","baseAxis","baseIndex","stepPoints","nextPt","pt","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","getVisual","visualMeta","dimension","getDimensionInfo","axis","getAxis","colorStops","stops","stop","coord","toGlobalCoord","dataToCoord","stopLen","outerColors","reverse","tinyExtent","minCoord","maxCoord","coordSpan","gradient","LinearGradient","getIsIgnoreFunc","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","labelItem","tickValue","axisExtent","getExtent","availSize","dataLen","createLineClipPath","rectShape","expandSize","lineGroup","symbolDraw","_symbolDraw","_lineGroup","getData","lineStyleModel","areaStyleModel","mapArray","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","isAreaChart","isEmpty","valueOrigin","stackedOnPoints","isIgnoreFunc","__temp","clipShapeForSymbol","r1","_clipShapeForSymbol","_step","_newPolygon","setClipPath","_stackedOnPoints","_points","_updateAnimation","setShape","_newPolyline","visualColor","getLineStyle","stroke","lineJoin","stackedOnSeries","getCalculationInfo","stackedOnSmooth","getAreaStyle","_valueOrigin","queryDataIndex","ignore","stackedOnCurrent","next","stackedOnNext","__points","updatedDataInfo","diffStatus","cmd","idx1","ptIdx","animators","during","isDimensionStacked","stacked","valueAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDim","baseDataOffset","dims","stackResultDim","dataDimsForPoint","stackedOverDimension","extent","NaN","stackedData","dataToPoint","diffData","newData","diffResult","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","getRawIndex","rawIndex","sort","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","Path","vec2","fixClipWithShadow","vec2Min","vec2Max","scaleAndAdd","v2Copy","cp0","cp1","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","drawMono","drawNonMono","prevIdx","k","prevP","ctrlLen","bezierCurveTo","lineTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","dist","getBoundingBox","smoothConstraint","ptMin","ptMax","brush","buildPath","bbox","stackedOnBBox","closePath","retrieve","formatUtil","Model","isRadianAroundZero","remRadian","matrixUtil","_vector","v2ApplyTransform","applyTransform","_axisHelper","shouldShowAllLabels","AxisBuilder","labelOffset","nameDirection","tickDirection","labelDirection","dumbGroup","rotation","updateTransform","_transform","transform","_dumbGroup","hasBuilder","builders","getGroup","axisLine","matrix","pt1","pt2","lineCap","Line","anid","subPixelOptimize","x1","y1","x2","y2","strokeContainThreshold","arrows","arrowSize","arrowOffset","symbolWidth","symbolHeight","rotate","sqrt","index","cos","sin","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","axisName","labelLayout","axisNameAvailableWidth","nameLocation","textStyleModel","gap","gapSignal","isNameLocationCenter","nameRotation","innerTextLayout","endTextLayout","textFont","getFont","truncateOpt","ellipsis","maxWidth","nameTruncateMaxWidth","truncatedText","truncateText","minChar","placeholder","tooltipOpt","mainType","formatterParams","componentType","$vars","componentIndex","textEl","Text","__fullText","__truncatedText","isLabelSilent","tooltip","show","content","formatter","setTextStyle","textFill","getTextColor","textAlign","textVerticalAlign","eventData","makeAxisEventDataBase","targetType","decomposeTransform","axisRotation","textRotation","direction","rotationDiff","textPosition","textRotate","inverse","onLeft","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","nextTick","lastTick","prevTick","ignoreEl","isTwoLabelOverlapped","firstRect","getBoundingRect","clone","nextRect","mRotationBack","identity","getLocalTransform","intersect","createTicks","ticksCoords","tickTransform","tickEndCoord","tickLineStyle","aniid","tickCoord","tickEl","axisBuilder","tickModel","isBlank","getTicksCoords","minorTickModel","minorTicksCoords","getMinorTicksCoords","minorTickLineStyle","minorTicksEls","axisLabelShow","labelMargin","labels","labelRotation","labelRotate","rawCategoryData","getCategories","triggerEvent","formattedLabel","rawLabel","itemLabelModel","textStyle","textColor","axisPointerModelHelper","AxisView","extendComponentView","_axisPointer","axisPointerClass","fixValue","superApply","updateAxisPointer","force","axisPointer","disposeAxisPointer","axisView","forceRender","Clazz","getAxisPointerClass","axisPointerModel","getAxisPointerModel","axisPointerClazz","registerAxisPointerClass","clazz","cartesianAxisHelper","_axisSplitHelper","rectCoordAxisBuildSplitArea","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","gridModel","getCoordSysModel","layout","groupTransition","superCall","_splitLine","splitLineModel","lineColors","gridRect","getRect","lineCount","colorIndex","_minorSplitLine","minorSplitLineModel","_splitArea","axisGroup","splitAreaModel","areaColors","clamp","areaColorsLen","lastSplitAreaColors","__splitAreaColors","newSplitAreaColors","createHashMap","cIndex","prev","areaStyle","axisTrigger","registerPreprocessor","link","getComponent","coordSysAxesInfo","collect","registerAction","AxisPointerModel","extendComponentModel","triggerOn","snap","triggerTooltip","animation","animationDurationUpdate","shadowStyle","precision","backgroundColor","borderColor","borderWidth","handle","icon","throttle","globalListener","AxisPointerView","globalAxisPointerModel","globalTooltipModel","currTrigger","offsetX","offsetY","unregister","clazzUtil","eventTool","throttleUtil","BaseAxisPointer","animationModel","moveAnimation","propsEqual","lastProp","lastProps","newProps","item","updateLabelShowHide","labelEl","getHandleTransProps","trans","updateMandatoryProps","_group","_lastGraphicKey","_handle","_dragging","_lastValue","_lastStatus","_payloadInfo","animationThreshold","_axisModel","_axisPointerModel","_api","hide","elOption","makeElOption","graphicKey","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","_renderHandle","isCategoryAxis","useSnap","getBandWidth","seriesDataCount","getAxisInfo","pointerOption","pointer","pointerEl","updateHandleTransform","zr","handleModel","createIcon","onmousemove","onmousedown","_onHandleDragMove","ondragend","_onHandleDragEnd","includeStyles","handleSize","createOrUpdate","_moveHandleToValue","getHandleTransform","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","axesInfo","axisDim","axisIndex","doClear","buildLabel","xy","wh","xDimIndex","enableClassExtend","viewHelper","CartesianAxisPointer","grid","axisPointerType","otherExtent","getCartesian","getGlobalExtent","pixelValue","buildElStyle","pointerShapeBuilder","layoutInfo","model","buildCartesianSingleLabelElOption","labelInside","getTransformedPosition","delta","currPosition","cursorOtherValue","tooltipOptions","verticalAlign","align","targetShape","makeLineShape","getAxisDimIndex","shadow","bandWidth","span","makeRectShape","modelHelper","findPointFromSeries","illegalPoint","seriesIndex","isIllegalPoint","inputAxesInfo","shouldHide","outputFinder","showValueMap","dataByCoordSys","updaters","showPointer","showTooltip","coordSysMap","coordSysKey","coordSysContainsPoint","containPoint","axisInfo","inputAxisInfo","findInputAxisInfo","pointToData","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","dontSnap","containData","involveSeries","buildPayloadsBySeries","payloadBatch","snapToValue","minDist","MAX_VALUE","minDiff","seriesModels","series","seriesNestestValue","dataIndices","dataDim","getAxisTooltipData","nestestValue","indicesOfNearest","dataIndexInside","coordSysModel","makeKey","coordSysItem","coordSysId","coordSysIndex","coordSysType","coordSysMainType","dataByAxis","axisId","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","useHandle","escapeConnect","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","batch","getSeriesByIndex","getTooltipPosition","getValues","env","handler","records","initGlobalListeners","record","useHandler","eventType","dis","makeDispatchAction","dispatchTooltipFinally","pendings","initialized","doEnter","onLeave","actuallyPayload","showLen","showTip","hideLen","hideTip","pendingList","seriesInvolved","collectAxesInfo","collectSeriesInfo","linksOption","linkGroups","axisPointerEnabled","axesInfoInCoordSys","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","axisPointerShow","isHandleTrigger","makeAxisPointerModel","groupIndex","getLinkGroupIndex","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","crossStyle","eachSeries","seriesTooltipTrigger","seriesTooltipShow","linkOption","checkPropInLink","linkPropValue","axisPropValue","textContain","axisHelper","styleModel","buildLabelElOption","labelPos","getValueLabel","paddings","normalizeCssArray","font","textRect","confineInContainer","bgColor","textPadding","viewWidth","getWidth","viewHeight","getHeight","getLabel","getAxisRawValue","axisDimension","seriesData","idxItem","dataParams","getDataParams","translate","textLayout","makeSectorShape","ComponentModel","ComponentView","detectSourceFormat","SERIES_LAYOUT_BY_COLUMN","seriesLayoutBy","sourceHeader","optionUpdated","xAxis","yAxis","_layout","getLayoutRect","_format","windowOpen","layoutMode","ignoreSize","subtext","subtarget","left","itemGap","fontWeight","subtextStyle","titleModel","subtextStyleModel","retrieve2","disableBox","subText","subTextEl","sublink","groupRect","layoutOption","getBoxLayoutParams","layoutRect","alignStyle","zrColor","eventUtil","domUtil","toCamelCase","vendors","gCssText","assembleTransition","duration","transitionCurve","transitionText","vendorPrefix","assembleFont","assembleCssText","tooltipModel","transitionDuration","canvasSupported","toHex","borderName","camelCase","makeStyleCoord","appendToBody","zrX","zrY","zrPainter","painter","zrViewportRoot","getViewportRoot","transformLocalCoord","viewportRootOffset","getViewportRootOffset","offsetLeft","offsetTop","TooltipContent","wxa","domBelongToZr","_zr","_appendToBody","_styleCoord","_container","_show","_hideTimeout","onmouseenter","_enterable","_inContent","normalizeEvent","dispatch","onmouseleave","hideLater","_hideDelay","stl","currentStyle","defaultView","domStyle","styleCoord","innerHTML","pointerEvents","setContent","setEnterable","enterable","getSize","clientWidth","clientHeight","moveTo","time","isShow","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","showContent","alwaysShowContent","displayMode","renderMode","confine","showDelay","hideDelay","borderRadius","extraCssText","animationEasingUpdate","TooltipRichContent","markerRich","markers","prefix","startId","endId","textWidth","textHeight","textBorderRadius","textBackgroundColor","textOffset","rich","textLineHeight","bounding","numberUtil","layoutUtil","axisPointerViewHelper","getTooltipRenderMode","proxyRect","tooltipContent","_renderMode","getDom","_newLine","_tooltipContent","_tooltipModel","_ecModel","_lastDataByCoordSys","_alwaysShowContent","_initGlobalListener","_keepShow","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","uid","_ticket","_manuallyAxisShowTip","pointInfo","findHover","manuallyHideTip","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","delay","_showTimout","singleDefaultHTML","singleParamsList","singleTooltipModel","newLine","itemCoordSys","axisValue","seriesDefaultHTML","valueLabel","axisValueLabel","html","seriesTooltip","formatTooltip","newMarkers","firstLine","encodeHTML","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","random","dataModel","dataType","tooltipTrigger","defaultHtml","asyncTicket","subTooltipModel","formatTpl","cbTicket","contentSize","vAlign","viewSize","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","pop","gapH","gapV","domWidth","domHeight","rectWidth","rectHeight","dev","g","linearMap","getPixelPrecision","_axisTickLabelBuilder","createAxisTicks","createAxisLabels","calculateCategoryInterval","NORMALIZED_EXTENT","Axis","_extent","onBand","fixExtentWithBands","nTick","fixOnBandTicksCoords","alignWithLabel","ticksLen","last","diffSize","crossLen","ticksItem","dataExtent","littleThan","setExtent","normalize","coordToData","getTickModel","ticks","splitNumber","minorTicks","getMinorTicks","minorTicksGroup","minorTick","getLabelModel","getRotate","nameRotate","nameTruncate","nameTextStyle","nameGap","onZero","onZeroAxisIndex","axisTick","inside","axisLabel","splitLine","splitArea","axisDefault","boundaryGap","deduplication","interval","minorSplitLine","timeAxis","logAxis","logBase","OrdinalScale","IntervalScale","Scale","_barGrid","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","BoundingRect","getScaleExtent","axisDataLen","scaleType","getMin","getMax","originalExtent","fixMin","fixMax","setBlank","eqNaN","categories","getNeedCrossZero","isBaseAxisAndHasBarSeries","barSeriesModels","barWidthAndOffset","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","extentInfo","base","niceExtent","minInterval","maxInterval","setInterval","createScaleByModel","getClass","ifAxisCrossZero","makeLabelFormatter","labelFormatter","categoryTickStart","tpl","tick","estimateLabelUnionRect","realNumberScaleTicks","tickCount","isCategory","categoryScaleExtent","getTicks","axisLabelModel","ceil","unrotatedSingleRect","getTextRect","singleRect","rotateTextRect","union","rotateRadians","boundingBox","plain","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","origin","rangeStart","rangeEnd","noop","setRange","resetRange","getLayoutParams","mergeLayoutParam","OrdinalMeta","AXIS_TYPES","BaseAxisModelClass","axisTypeDefaulter","extraDefaultOption","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","thisOption","__ordinalMeta","createByAxisModel","rawData","mergeAll","registerSubTypeDefaulter","makeCategoryLabels","makeRealNumberLabels","makeCategoryTicks","makeCategoryLabelsActually","labelCategoryInterval","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","cache","autoInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtend0","axisExtend1","categoryInterval","onlyTick","startTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tVal","Axis2D","coordExtent","getAxesOnZeroOf","asc","toLocalCoord","axisModelCreator","axisModelCommonMixin","AxisModel","mergeOption","restoreData","queryComponents","gridIndex","gridId","getAxisType","extraOption","dimAxisMapper","_axes","Cartesian","_dimList","filter","addAxis","_dataCoordConvert","input","dimList","Cartesian2D","axisX","axisY","reserved","clampData","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","yExtent","getStackedDimension","isAxisUsedInTheGrid","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","gridProto","fixAxisOnZero","axesMap","otherAxisDim","onZeroRecords","otherAxisOnZeroOf","canOnZeroToAxis","getOnZeroRecordKey","updateAxisTransform","coordBase","axisExtentSum","_rect","_updateScale","ignoreContainLabel","axesList","adjustAxes","labelUnionRect","axesMapOnDim","xAxisIndex","yAxisIndex","coordList","getCartesians","_findConvertTarget","xAxisModel","getReferringComponents","yAxisModel","coordsList","axisPositionUsed","right","bottom","axesCount","eachComponent","createAxisCreator","axisPosition","unionExtent","unionExtentFromData","isCartesian2D","axesModels","findAxesModels","otherAxis","axesTypes","grids","containLabel","rawAxisPosition","rectBound","axisOffset","posBound","onZeroCoord","dirMap","polygonContain","Region","geometries","cp","center","properties","MAX_NUMBER","exterior","loopGeo","interiors","transformTo","aspect","calculateTransform","cloneShallow","newRegion","_parseSVG","assert","parseXML","storage","rawGeoJson","rawSpecialAreas","svg","geoJson","features","parsers","retrieveMap","Function","svgXML","decode","json","UTF8Encoding","encodeScale","UTF8Scale","feature","geometry","coordinates","encodeOffsets","coordinate","decodePolygon","c2","prevX","prevY","nameProperty","featureObj","geo","region","defaultKeyGetter","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","keyArr","keyGetterName","dataDiffer","existence","func","_add","_update","_remove","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","DataDimensionInfo","defaultDimValueGetters","DefaultDataProvider","summarizeDimensions","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","_rawCount","cloneChunk","originalChunk","Ctor","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","__wrappedMethods","propName","_calculationInfo","dimensionInfos","dimensionNames","invertedIndicesMap","dimensionInfo","dimensionName","coordDimIndex","createInvertedIndices","_dimensionInfos","_indices","_count","_storage","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawData","_rawExtent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","userOutput","listProto","prepareChunks","chunkSize","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","prepareInvertedIndex","invertedIndices","getRawValueFromStore","chunkIndex","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","getId","_idDimIdx","normalizeDimensions","cloneListForMapAndSample","original","excludeDimensions","allDimensions","originalStorage","cloneDimStore","getInitialExtent","originalDimStore","newDimStore","getDimension","getDimensionsOnCoord","dataDimsOnCoord","dimensionsSummary","encodeFirstDimNotExtra","nameList","notProvider","isArrayLike","_nameRepeatCount","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","pure","getProvider","persistent","appendValues","values","names","dimLen","rawExtent","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","_nameDimIdx","itemId","dataItem","getItem","dimStorage","nameDim","nameDimChunk","clean","getIndices","indices","thisCount","chunkStore","getByRawIndex","rawIdx","dimStore","_getFast","hasValue","getDataExtent","dimData","initialExtent","dimExtent","currEnd","useRaw","getApproximateExtent","setApproximateExtent","getSum","sum","getMedian","dimDataArray","sortedDimDataArray","rawIndexOf","indexOfName","indexOfRawIndex","rawDataIndex","mid","maxDistance","nearestIndices","nearestIndicesLen","getRawDataItem","contextCompat","dimSize","filterSelf","dim0","keep","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","dataIdx","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","otherList","thisList","visual","setVisual","setLayout","getLayout","setItemLayout","clearItemLayouts","ignoreParent","itemVisual","setItemVisual","clearAllVisual","setItemDataAndSeriesIndex","child","dimensionInfoList","wrapMethod","injectFunction","originalMethod","TRANSFERABLE_METHODS","CHANGABLE_METHODS","_needCollect","needCollect","_deduplication","_map","dedplication","getOrCreateMap","getOrdinal","category","parseAndCollect","isTypedArray","_clazz","enableClassCheck","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_KEYED_COLUMNS","fromDataset","dimensionsDefine","encodeDefine","startIndex","dimensionsDetectCount","normalizeToArray","guessOrdinal","BE_ORDINAL","OTHER_DIMENSIONS","completeDimensions","sysDims","dimsDef","dataDimNameMap","coordDimNameMap","dimCount","getDimCount","dimDefItem","userDimName","resultItem","displayName","encodeDef","dataDims","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimItem","sysDimIndex","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItemDimsDefItem","defaultTooltip","generateCoordCount","fromZero","extra","genName","isExtraCoord","Must","seriesName","optDimCount","dimensionsCount","isDataItemOption","parseDate","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","_source","_offset","_dimSize","providerMethods","providerProto","appendDataSimply","row","countSimply","getItemSimply","col","newCol","oldCol","rawValueGetters","getRawValueSimply","objectRows","keyedColumns","typedArray","getDimValueSimply","converDataValue","dimType","retrieveRawAttr","stackedByDimInfo","stackedDimInfo","stackResultDimension","byIndex","stackedCoordDimension","mayStack","stackedDimCoordDim","stackedDimType","stackedDimCoordIndex","isCalculationCoord","stackedDimension","stackedByDimension","isStackedByIndex","stackedDim","targetDim","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","dimItem","getOrCreateEncodeArr","mayLabelDimType","otherDim","encodeArr","dimArr","encodeLabel","encodeTooltip","SERIES_LAYOUT_BY_ROW","Might","Not","datasetModel","resetSourceDefaulter","datasetMap","prepareSource","seriesOption","getDatasetModel","datasetOption","completeResult","completeBySourceData","normalizeDimensionsDefine","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","value0","nameMap","exist","maxLoop","firstIndex","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","coordDimInfo","coordDimIdx","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","coordDimName","makeSeriesEncodeForNameBased","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","nameDimIndex","thisData","datasetIndex","sample","detectValue","beStr","zrender","colorTool","timsort","Eventful","GlobalModel","OptionManager","backwardCompat","dataStack","_throttle","seriesColor","aria","loadingDefault","Scheduler","lightTheme","darkTheme","mapDataStorage","parseClassType","version","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_BRUSH","FILTER","SERIES_FILTER","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","IN_MAIN_PROCESS","OPTION_UPDATED","ACTION_REG","createRegisterEventWithLowercaseName","ignoreDisposed","eventName","_disposed","disposedWarning","MessageCenter","ECharts","dom","opts","themeStorage","_dom","defaultRenderer","renderer","devicePixelRatio","_throttledZrFlush","flush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","createExtensionAPI","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_initEvents","_pendingActions","_onframe","bindRenderedEvent","setAsPrimitive","one","mixin","echartsProto","doConvertPixel","coordSysList","parseFinder","scheduler","prepare","updateMethods","flushPendingActions","triggerUpdatedEvent","unfinished","remainTime","startTime","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","renderSeries","optionManager","optionPreprocessorFuncs","setTheme","getOption","getDevicePixelRatio","dpr","getRenderedCanvas","pixelRatio","getSvgDataURL","svgSupported","getDisplayList","toDataURL","excludeComponents","excludesComponentViews","view","__viewId","getType","isSvg","groupId","mathMin","mathMax","connectedGroups","canvasList","instances","canvas","getSvgDom","boundingRect","getBoundingClientRect","targetCanvas","createCanvas","getSvgRoot","connectedBackgroundColor","setBackgroundColor","refreshImmediately","img","Image","image","models","visualType","defaultMainType","getViewOfComponentModel","componentModel","getViewOfSeriesModel","prepareAndUpdate","coordSysMgr","clearColorPalette","colorArr","performPostUpdateFuncs","ecIns","componentDirtyList","componentView","__alive","seriesDirtyMap","chartView","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","restorePipelines","prepareStageTasks","prepareView","plan","updateDirectly","subType","query","condition","excludeSeriesId","callView","__model","chartsMap","doDispatchAction","payloadType","actionWrap","actionInfo","cptType","updateMethod","payloads","batched","eventObj","eventObjBatch","isHighDown","main","pendingActions","isFinished","isComponent","viewList","viewMap","doPrepare","viewId","classType","__id","__ecComponentInfo","renderTask","renderComponents","dirtyList","updateZ","updatePayload","dirty","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","postUpdateFuncs","_loadingFX","optionChanged","resetOption","cfg","loadingEffects","makeActionFromEvent","eventActionMap","browser","weChat","MOUSE_EVENT_NAMES","elCount","preventUsingHoverLayer","blendMode","blend","eachPendingDisplayable","displayable","ecInstance","getComponentByElement","modelInfo","eventInfo","eveName","isGlobalOut","targetEl","packedEvent","zrEventfulCallAtLast","actionType","DOM_ATTRIBUTE_KEY","normalizeQuery","cptQuery","dataQuery","otherQuery","condCptType","suffixes","dataKeys","propSuffix","suffixPos","check","filterForExposedEvent","propOnHost","afterTrigger","idBase","groupIdBase","enableConnect","STATUS_PENDING","STATUS_UPDATING","STATUS_UPDATED","STATUS_KEY","updateConnectedChartsStatus","charts","otherChart","otherCharts","existInstance","getInstanceByDom","disConnect","getInstanceById","preprocessorFunc","priority","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","registerCoordinateSystem","getCoordinateSystemDimensions","coordSysCreator","layoutTask","visualTask","targetList","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","extendSeriesModel","extendChartView","setCanvasCreator","creator","$override","getMap","dataTool","___ec_export","vector","graphicUtil","number","format","ecHelper","helper","parseGeoJSON","_List","_Model","_Axis","_env","parseGeoJson","ecUtil","util","_completeDimensions","_createDimensions","createList","createScale","mixinAxisModelCommonMethods","legend","toolbox","title","lineX","lineY","dataView","lang","dataZoom","zoom","back","magicType","bar","stack","tiled","restore","saveAsImage","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","lines","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","general","withTitle","withoutTitle","single","withName","withoutName","multiple","separator","allData","partialData","createRenderPlanner","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","Float32Array","getSeriesStackId","getAxisKey","getLayoutOnAxis","axisKey","stackId","widthAndOffsets","doCalBarWidthAndOffset","offsetCenter","seriesType","eachSeriesByType","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cnt","axisMinGaps","valuesInAxis","seriesInfoList","minGap","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","minWidth","barGapPercent","autoWidth","column","finalWidth","lastColumn","widthSum","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","isValueAxisH","valueAxisStart","getValueAxisStart","baseValue","sign","baseCoord","largeLayout","reset","coordLayout","valueAxisHorizontal","valueDimIdx","progress","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","isLargeRender","segCount","tmpIn","tmpOut","maskColor","showSpinner","spinnerRadius","mask","labelRect","textDistance","arc","Arc","animateShape","when","componentUtil","enableClassManagement","boxLayoutMixin","dependentModels","$constructor","parentModel","extraOpt","getUID","newCptOption","optList","Class","getDependencies","deps","getClassesByMainType","registerWhenExtend","enableSubTypeDefaulter","enableTopologicalTravel","globalDefault","colorPaletteMixin","OPTION_INNER_KEY","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","newOption","componentsMap","newCptTypes","visitComponent","newCptOptionList","mapResult","mappingToExists","makeIdAndName","keyInfo","determineSubType","getComponentsByTypes","ComponentModelClass","createSeriesIndices","componentOption","hasClass","topologicalTravel","getAllClassMainTypes","_seriesIndicesMap","_seriesIndices","isIdInner","cpts","isIdArray","cpt","isNameArray","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","q","indexAttr","idAttr","nameAttr","components","queryResult","getSeriesByName","oneSeries","getSeriesByType","getSeries","getSeriesCount","assertSeriesInitialized","rawSeriesIndex","eachRawSeries","eachRawSeriesByType","isSeriesFiltered","getCurrentSeriesIndices","filterSeries","filteredSeries","componentTypes","isNotTargetSeries","seiresIndex","seriesId","mergeTheme","notMergeColorLayer","colorLayer","themeItem","types","existComponent","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","pathArr","getParent","getParentMethod","parsePath","thisParentModel","setReadOnly","customizeGetParent","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","isNew","mediaDefault","timelineOptions","mediaList","timelineOpt","timeline","media","singleMedia","preProcess","applyMediaQuery","ecWidth","ecHeight","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indicesEquals","indices1","indices2","oldOption","newCptOpt","oldCptOpt","oldOptionBackup","newParsedOption","isRecreate","optionBackup","timelineModel","getCurrentIndex","formatTime","addCommas","getTooltipMarker","dataFormatMixin","_task","createTask","legendVisualProvider","visualColorAccessPath","visualBorderColorAccessPath","dataTask","dataTaskCount","dataTaskReset","wrapData","dataBeforeProcessed","autoSeriesName","themeSubType","defaultEmphasis","fillDataTextStyle","newSeriesOption","getRawData","task","getCurrentTask","getLinkedData","setData","modifyOutputEnd","setOutputEnd","outputData","multipleSeries","isRichText","markerId","formatArrayValue","vertially","reduce","setEachItem","markName","dimHead","dimHeadStr","valStr","tooltipDims","formatSingleValue","tooltipDimLen","getRawValue","isValueArr","formattedValue","colorEl","isNameSpecified","colorStr","animationEnabled","getColorFromPalette","scope","requestColorNum","coordDimToDataDim","getProgressive","getProgressiveThreshold","pipeTask","preventIncremental","getSeriesAutoName","nameArr","dataTaskProgress","param","onDataSelfChange","pipeline","getPipeline","currentTask","agentStubMap","platform","gradientColor","fontFamily","fontStyle","animationDuration","progressiveThreshold","useUTC","makeStyleMapper","excludes","getNearestColorPalette","colors","paletteNum","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","DIMENSION_LABEL_REG","rawValue","renderModeOption","isSeries","componentSubType","marker","getFormattedLabel","labelProp","dimensionIndex","lineDash","getBorderLineDash","lineType","getLineDash","dotSize","dashSize","PATH_COLOR","isEmphasis","CoordSysInfo","fetch","fetchers","cartesian2d","singleAxis","singleAxisModel","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","compatStyle","overwrite","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","isTheme","seriesOpt","clipOverflow","clockWise","pointerColor","dataRange","visualMap","componentName","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","styleName","normalItemStyleOpt","normal","emphasisItemStyleOpt","emphasis","convertNormalEmphasis","optType","useExtend","normalOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","TEXT_STYLE_OPTIONS","compatEC3CommonStyles","processSeries","markPoint","markLine","markArea","nodes","edgeData","links","edges","mpData","mlData","breadcrumb","levels","leaves","toArr","toObj","axes","axisOpt","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","geoOpt","regions","regionObj","toolboxOpt","featureOpt","samplers","average","frame","nearest","indexSampler","sampler","stackInfoMap","stackInfoList","stackInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","targetData","v0","v1","byValue","stackedDataRawIndex","stackedOver","roundNumber","_interval","_intervalPrecision","thisExtent","parseFloat","other","getInterval","_niceExtent","getIntervalPrecision","expandToNicedExtent","niceTickExtent","intervalPrecision","safeLimit","lastNiceTick","minorInterval","getPrecisionSafe","niceTicks","intervalScaleNiceTicks","scaleProto","intervalScaleProto","roundingErrorFix","mathFloor","mathCeil","mathPow","mathLog","log","LogScale","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","approxTickNum","quantity","originalVal","_ordinalMeta","rank","setting","_setting","getSetting","_isBlank","scaleHelper","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","bisect","TimeScale","stepLvl","_stepLvl","date","getFullYear","getMonth","getDate","approxInterval","scaleLevelsLen","scaleLevels","level","yearSpan","yearStep","nice","timezoneOffset","getTimezoneOffset","fixExtent","_component","dataProcessorHandlers","visualHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","__pipeline","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","performArgs","block","pipelineId","skip","performRawSeries","taskRecord","isBlock","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","modDataCount","modBy","incrementalPrepareRender","threshold","pipelineMap","head","tail","stageTaskMap","createSeriesStageTask","overallReset","createOverallStageTask","__block","getUpstream","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","createOnAllSeries","removeKey","overallTaskReset","overallProgress","createStub","stubReset","onDirty","stubOnDirty","agent","upstreamContext","stubProgress","getDownstream","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","dataEach","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","Clz","cond","define","Task","_reset","_plan","_onDirty","_dirty","taskProto","planResult","upTask","_upstream","forceFirstProgress","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","_dueEnd","_outputDueEnd","_progress","_dueIndex","doProgress","outputDueEnd","_settedOutputEnd","winCount","it","sStep","sCount","modNext","sequentialNext","taskIns","_callingProgress","downstream","_downstream","downTask","contrastColor","axisCommon","iconStyle","controlStyle","color0","borderColor0","colorAll","TYPE_DELIMITER","IS_CONTAINER","checkClassType","RootClass","mandatoryMethods","ExtendedClass","classBase","classAttr","toFixed","entity","makeContainer","registerClass","componentMainType","throwWhenNotFound","hasSubTypes","originalExtend","subTypeDefaulters","defaulter","componentTypeMain","dependencyGetter","makeDepndencyGraph","fullNameList","noEntryList","createDependencyGraphItem","originalDeps","availableDeps","getAvailableDependencies","entryCount","dependentName","predecessor","thatItem","successor","dep","targetNameList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","upperCaseFirst","group1","replaceReg","replaceMap","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","paramsList","seriesLen","alias","formatTplSimple","pad","isUTC","utc","M","S","capitalFirst","getTextBoundingRect","truncate","blank","opener","pathTool","Transformable","ZImage","Circle","Ring","BezierCurve","CompoundPath","RadialGradient","IncrementalDisplayable","subPixelOptimizeUtil","EMPTY_OBJ","Z2_EMPHASIS_LIFT","CACHED_LABEL_STYLE_PROPERTIES","textBorderColor","textBorderWidth","EMPHASIS","NORMAL","_highlightNextDigit","_highlightKeyMap","_customShapeMap","extendShape","extendPath","pathData","extendFromString","registerShape","ShapeClass","getShapeClass","makePath","createFromString","centerGraphic","resizePath","makeImage","imageUrl","onload","mergePath","pathRect","subPixelOptimizeLine","subPixelOptimizeRect","hasFillOrStroke","fillOrStroke","liftedColorMap","liftedColorCount","liftColor","liftedColor","lift","cacheElementStl","__hoverStlDirty","__hoverStl","normalStyle","__cachedNormalStl","__cachedNormalZ2","singleEnterEmphasis","hoverStl","__highlighted","__zr","elTarget","targetStyle","addHover","rollbackDefaultTextStyle","extendFrom","setDefaultHoverFillStroke","applyDefaultTextStyle","singleEnterNormal","highlighted","removeHover","normalStl","normalZ2","traverseUpdate","updater","commonParam","__highDownOnUpdate","setElementHoverStyle","onElementMouseOver","shouldSilent","__highByOuter","onElementMouseOut","onElementEmphasisEvent","highlightDigit","onElementNormalEvent","__highDownSilentOnTouch","zrByTouch","setAsHighDownDispatcher","asDispatcher","disable","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","getHighlightDigit","highlightKey","emphasisStyle","normalModel","emphasisModel","normalSpecified","emphasisSpecified","baseText","labelDimIndex","showNormal","showEmphasis","normalStyleText","emphasisStyleText","modifyLabelStyle","normalStyleProps","emphasisStyleProps","specifiedTextStyle","setTextStyleCommon","setText","defaultColor","getTextPosition","richResult","globalTextStyle","richItemNames","getRichItemNames","richTextStyle","setTokenTextStyle","forceRich","richItemNameMap","getAutoColor","textStroke","textStrokeWidth","insideRollbackOpt","textTag","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","insideRollback","useInsideStyle","useInsideStyleCache","useAutoColorCache","gTextStyleModel","animateOrSetProps","isUpdate","animatableModel","postfix","animationDelay","getAnimationDelayParams","getTransform","ancestor","mat","invert","transformDirection","hBase","vBase","vertex","g1","g2","elMap1","getElMap","oldEl","newProp","getAnimatableProps","elMap","clipPointsByRect","clipRectByRect","targetRect","iconStr","rectHover","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","eachChild","nextX","nextY","nextChild","nextChildRect","moveX","newline","moveY","box","vbox","hbox","getAvailableSize","positionInfo","containerRect","containerWidth","containerHeight","verticalMargin","horizontalMargin","positionElement","hv","boundingMode","needLocalTransform","elPos","sizeCalculable","hvIdx","targetOption","hResult","vResult","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","copyLayoutParams","DUMMY_COMPONENT_NAME_PREFIX","subOpts","subOptName","exists","newCptOptions","cptOption","idMap","existCpt","idNum","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","otherDataIndices","lenj","isData","innerUniqueIndex","hostObj","has","parsedKey","queryType","includeMainTypes","queryParam","domSupported","groupData","getKey","buckets","RADIAN_EPSILON","_trim","subDomain","subRange","percent","returnStr","getPrecision","eIndex","dotIndex","pixelExtent","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","radian","pi2","TIME_REG","exec","hour","UTC","quantityExponent","exp","nf","exponent","exp10","quantile","ascArr","H","reformIntervals","curr","currClose","close","lg","isNumeric","_text","calculateTextPosition","Triangle","Diamond","Pin","w","angle","asin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","circle","diamond","pin","arrow","triangle","symbolShapeMakers","symbolBuildProxies","inBundle","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","ORIGIN_METHOD","RATE","THROTTLE_TYPE","debounce","currCall","debounceNextCall","lastCall","lastExec","timer","getTime","thisDelay","thisDebounce","debounceDelay","fnAttr","throttleType","originFn","lastThrottleType","lastRate","renderPlanner","Chart","renderTaskPlan","renderTaskReset","toggleHighlight","incrementalRender","chartProto","elSetState","state","childCount","progressMethodMap","Component","componentProto","ariaModel","seriesCnt","ariaLabel","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getTitle","getConfig","seriesLabels","seriesCount","seriesLabel","seriesTpl","getSeriesTypeName","displayCnt","dataLabels","keyValues","userConfig","Gradient","colorAccessPath","colorCallback","borderColorAccessPath","defaultSymbolType","legendSymbol","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","symbolKeepAspect","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","loaded","comment_handler_1","jsx_parser_1","parser_1","tokenizer_1","commentHandler","proxyDelegate","metadata","visit","parserDelegate","collectComment","comment","attachComment","CommentHandler","attach","parser","isModule","sourceType","jsx","JSXParser","Parser","program","parseModule","parseScript","ast","comments","tokens","tolerant","errors","errorHandler","parsingOptions","tokenize","tokenizer","Tokenizer","getNextToken","tolerate","syntax_1","Syntax","trailing","insertInnerComments","BlockStatement","innerComments","entry","findTrailingComments","trailingComments","entry_1","firstComment","findLeadingComments","leadingComments","visitNode","Program","visitComment","loc","AssignmentExpression","AssignmentPattern","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AwaitExpression","BinaryExpression","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForStatement","ForOfStatement","ForInStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","Literal","LabeledStatement","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","Property","RestElement","ReturnStatement","SequenceExpression","SpreadElement","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","__extends","extendStatics","__","character_1","JSXNode","jsx_syntax_1","Node","token_1","xhtml_entities_1","getQualifiedElementName","elementName","qualifiedName","JSXSyntax","JSXIdentifier","JSXNamespacedName","namespace","JSXMemberExpression","expr","TokenName","_super","parsePrimaryExpression","parseJSXRoot","startJSX","scanner","startMarker","lineNumber","lineStart","finishJSX","nextToken","reenterJSX","expectJSX","createJSXNode","collectComments","createJSXChildNode","scanXHTMLEntity","quote","valid","terminated","numeric","hex","eof","ch","Character","isDecimalDigit","isHexDigit","XHTMLEntities","lexJSX","n1","n2","isIdentifierStart","isIdentifierPart","lex","nextJSXToken","lastMarker","convertToken","nextJSXText","isLineTerminator","peekJSXToken","saveState","scanComments","restoreState","throwUnexpectedToken","matchJSX","parseJSXIdentifier","finalize","parseJSXElementName","name_1","parseJSXAttributeName","attributeName","identifier","name_2","parseJSXStringLiteralAttribute","raw","getTokenRaw","parseJSXExpressionAttribute","tolerateError","expression","parseAssignmentExpression","JSXExpressionContainer","parseJSXAttributeValue","parseJSXElement","parseJSXNameValueAttribute","JSXAttribute","parseJSXSpreadAttribute","argument","JSXSpreadAttribute","parseJSXAttributes","parseJSXOpeningElement","selfClosing","JSXOpeningElement","parseJSXBoundaryElement","name_3","JSXClosingElement","parseJSXEmptyExpression","JSXEmptyExpression","parseJSXExpressionContainer","parseJSXChildren","children","JSXText","parseComplexJSXElement","opening","JSXElement","closing","open_1","close_1","isStartOfExpression","Regex","NonAsciiIdentifierStart","NonAsciiIdentifierPart","fromCodePoint","isWhiteSpace","isOctalDigit","openingElement","closingElement","generator","async","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","logical","callee","ComputedMemberExpression","computed","consequent","alternate","Directive","directive","declaration","specifiers","local","exported","imported","meta","kind","isStatic","static","Module","shorthand","RegexLiteral","pattern","flags","regex","Script","expressions","StaticMemberExpression","discriminant","cases","tag","quasi","quasis","finalizer","declarations","assert_1","error_handler_1","messages_1","scanner_1","ArrowParameterPlaceHolder","ErrorHandler","Scanner","trackComment","operatorPrecedence","lookahead","hasLineTerminator","await","allowIn","allowStrictDirective","allowYield","firstCoverInitializedNameError","isAssignmentTarget","isBindingElement","inFunctionBody","inIteration","inSwitch","labelSet","strict","throwError","messageFormat","_i","msg","whole","unexpectedTokenError","Messages","UnexpectedToken","UnexpectedEOS","UnexpectedIdentifier","UnexpectedNumber","UnexpectedString","UnexpectedTemplate","isFutureReservedWord","UnexpectedReserved","isStrictModeReservedWord","StrictReservedWord","lastMarkerLineStart","tolerateUnexpectedToken","multiLine","nextRegexToken","scanRegExp","createNode","startNode","lastLineStart","expectCommaSeparator","expectKeyword","keyword","matchKeyword","matchContextualKeyword","matchAssign","op","isolateCoverGrammar","parseFunction","previousIsBindingElement","previousIsAssignmentTarget","previousFirstCoverInitializedNameError","inheritCoverGrammar","consumeSemicolon","matchAsyncFunction","parseFunctionExpression","octal","StrictOctalLiteral","parseTemplateLiteral","parseGroupExpression","parseArrayInitializer","parseObjectInitializer","parseIdentifierName","parseClassExpression","parseSpreadElement","parsePropertyMethod","previousStrict","previousAllowStrictDirective","simple","parseFunctionSourceElements","firstRestricted","stricted","parsePropertyMethodFunction","isGenerator","previousAllowYield","parseFormalParameters","parsePropertyMethodAsyncFunction","previousAwait","parseObjectPropertyKey","isPropertyKey","parseObjectProperty","hasProto","isAsync","lookaheadPropertyKey","qualifiedPropertyName","parseGetterMethod","parseSetterMethod","parseGeneratorMethod","DuplicateProtoProperty","parseTemplateHead","cooked","parseTemplateElement","parseExpression","reinterpretExpressionAsPattern","startToken","parseRestElement","parameters","parseArguments","isIdentifierName","parseNewExpression","parseLeftHandSideExpression","parseAsyncArgument","parseAsyncArguments","parseLeftHandSideExpressionAllowCall","maybeAsync","previousAllowIn","asyncArrow","parseSuper","parseUpdateExpression","parseUnaryExpression","isRestrictedWord","StrictLHSPrefix","InvalidLHSInAssignment","StrictLHSPostfix","parseAwaitExpression","StrictDelete","parseExponentiationExpression","binaryPrecedence","precedence","parseBinaryExpression","prec","precedences","parseConditionalExpression","checkPatternParam","validateParam","reinterpretAsCoverFormalsList","paramSet","StrictParamDupe","parseYieldExpression","StrictLHSAssignment","parseStatementListItem","statement","IllegalExportDeclaration","parseExportDeclaration","IllegalImportDeclaration","parseImportDeclaration","parseLexicalDeclaration","inFor","parseFunctionDeclaration","parseClassDeclaration","isLexicalDeclaration","parseStatement","parseBlock","parseLexicalBinding","parsePattern","StrictVarName","DeclarationMissingInitializer","parseBindingList","parseBindingRestElement","parseArrayPattern","parsePatternWithDefault","parsePropertyPattern","keyToken","parseVariableIdentifier","parseObjectPattern","LetInLexicalBinding","parseVariableDeclaration","parseVariableDeclarationList","parseVariableStatement","parseEmptyStatement","parseExpressionStatement","parseIfClause","StrictFunction","parseIfStatement","parseDoWhileStatement","previousInIteration","parseWhileStatement","parseForStatement","forIn","decl","ForInOfLoopInitializer","initStartToken","InvalidLHSInForIn","InvalidLHSInForLoop","initSeq","parseContinueStatement","UnknownLabel","IllegalContinue","parseBreakStatement","IllegalBreak","parseReturnStatement","IllegalReturn","hasArgument","parseWithStatement","StrictModeWith","parseSwitchCase","parseSwitchStatement","previousInSwitch","defaultFound","clause","MultipleDefaultsInSwitch","parseLabelledStatement","Redeclaration","GeneratorInLegacyContext","parseThrowStatement","NewlineAfterThrow","parseCatchClause","paramMap","DuplicateBinding","StrictCatchVariable","parseFinallyClause","parseTryStatement","NoCatchOrFinally","parseDebuggerStatement","parseDirectivePrologues","previousLabelSet","previousInFunctionBody","StrictParamName","DefaultRestParameter","ParameterAfterRestParameter","parseFormalParameter","identifierIsOptional","StrictFunctionName","previousAllowAwait","formalParameters","parseDirective","IllegalLanguageModeDirective","BadGetterArity","BadSetterArity","BadSetterRestParameter","parseClassElement","hasConstructor","punctuator","ConstructorIsAsync","StaticPrototype","ConstructorSpecialMethod","DuplicateConstructor","parseClassElementList","parseClassBody","elementList","classBody","parseModuleSpecifier","InvalidModuleSpecifier","parseImportSpecifier","parseNamedImports","parseImportDefaultSpecifier","parseImportNamespaceSpecifier","NoAsAfterImportNamespace","MissingFromClause","parseExportSpecifier","exportDeclaration","isExportFromIdentifier","recordError","constructError","description","InvalidEscapedReservedWord","InvalidHexEscapeSequence","InvalidRegExp","TemplateOctalLiteral","UnexpectedTokenIllegal","UnterminatedRegExp","hexValue","octalValue","curlyStack","skipSingleLineComment","skipMultiLineComment","isKeyword","codePointAt","second","first","scanHexEscape","scanUnicodeCodePointEscape","getIdentifier","getComplexIdentifier","octalToDecimal","scanIdentifier","scanPunctuator","scanHexLiteral","scanBinaryLiteral","scanOctalLiteral","isImplicitOctalLiteral","scanNumericLiteral","scanStringLiteral","unescaped_1","unescaped","octToDec","scanTemplate","rawOffset","unescaped_2","testRegExp","astralSubstitute","$0","$1","$2","exception","scanRegExpBody","classMarker","scanRegExpFlags","char","quot","amp","apos","gt","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","weierp","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","empty","nabla","isin","notin","ni","prod","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","rang","Reader","curly","paren","beforeFunctionExpression","isRegexStart","previous","trackRange","trackLoc","reader","startRegex","classes","INFORMATIONAL","SUCCESSFUL","REDIRECTION","CLIENT_ERROR","SERVER_ERROR","CONTINUE","SWITCHING_PROTOCOLS","PROCESSING","EARLY_HINTS","OK","CREATED","ACCEPTED","NON_AUTHORITATIVE_INFORMATION","NO_CONTENT","RESET_CONTENT","PARTIAL_CONTENT","MULTI_STATUS","ALREADY_REPORTED","IM_USED","MULTIPLE_CHOICES","MOVED_PERMANENTLY","FOUND","SEE_OTHER","NOT_MODIFIED","USE_PROXY","SWITCH_PROXY","TEMPORARY_REDIRECT","PERMANENT_REDIRECT","BAD_REQUEST","UNAUTHORIZED","PAYMENT_REQUIRED","FORBIDDEN","NOT_FOUND","METHOD_NOT_ALLOWED","NOT_ACCEPTABLE","PROXY_AUTHENTICATION_REQUIRED","REQUEST_TIMEOUT","CONFLICT","GONE","LENGTH_REQUIRED","PRECONDITION_FAILED","REQUEST_ENTITY_TOO_LARGE","REQUEST_URI_TOO_LONG","UNSUPPORTED_MEDIA_TYPE","REQUESTED_RANGE_NOT_SATISFIABLE","EXPECTATION_FAILED","IM_A_TEAPOT","MISDIRECTED_REQUEST","UNPROCESSABLE_ENTITY","LOCKED","FAILED_DEPENDENCY","UPGRADE_REQUIRED","PRECONDITION_REQUIRED","TOO_MANY_REQUESTS","REQUEST_HEADER_FIELDS_TOO_LARGE","UNAVAILABLE_FOR_LEGAL_REASONS","INTERNAL_SERVER_ERROR","NOT_IMPLEMENTED","BAD_GATEWAY","SERVICE_UNAVAILABLE","GATEWAY_TIMEOUT","HTTP_VERSION_NOT_SUPPORTED","VARIANT_ALSO_NEGOTIATES","INSUFFICIENT_STORAGE","LOOP_DETECTED","NOT_EXTENDED","NETWORK_AUTHENTICATION_REQUIRED","unofficial","CHECKPOINT","PAGE_EXPIRED","THIS_IS_FINE","ENHANCE_YOUR_CALM","BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS","INVALID_TOKEN","TOKEN_REQUIRED","BANDWIDTH_LIMIT_EXCEEDED","SITE_IS_FROZEN","NETWORK_READ_TIMEOUT_ERROR","iis","LOGIN_TIME_OUT","RETRY_WITH","REDIRECT","nginx","NO_RESPONSE","REQUEST_HEADER_TOO_LARGE","SSL_CERTIFICATE_ERROR","SSL_CERTIFICATE_REQUIRED","HTTP_REQUEST_SENT_TO_HTTPS_PORT","CLIENT_CLOSED_REQUEST","cloudflare","UNKNOWN_ERROR","WEB_SERVER_IS_DOWN","CONNECTION_TIMED_OUT","ORIGIN_IS_UNREACHABLE","A_TIMEOUT_OCCURRED","SSL_HANDSHAKE_FAILED","INVALID_SSL_CERTIFICATE","RAILGUN_ERROR","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","yaml","loader","dumper","deprecated","Type","Schema","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","load","loadAll","safeLoad","safeLoadAll","dump","safeDump","YAMLException","MINIMAL_SCHEMA","SAFE_SCHEMA","DEFAULT_SCHEMA","scan","compose","addConstructor","isNothing","subject","toArray","sequence","sourceKeys","repeat","cycle","isNegativeZero","_toString","_hasOwnProperty","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","compileStyleMap","schema","compiledTypeMap","styleAliases","encodeHex","character","State","indent","noArrayIndent","skipInvalid","flowLevel","styleMap","sortKeys","noRefs","noCompatMode","condenseFlow","implicitTypes","compiledImplicit","explicitTypes","compiledExplicit","duplicates","usedDuplicates","indentString","spaces","ind","generateNextLine","testImplicitResolving","isWhitespace","isPrintable","isNsChar","isPlainSafe","isPlainSafeFirst","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","prev_char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","writeScalar","iskey","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","chomp","moreIndented","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","breakRe","nextChar","escapeSeq","writeFlowSequence","_result","_tag","writeNode","writeBlockSequence","compact","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","detectType","explicit","typeList","instanceOf","predicate","represent","defaultStyle","duplicateIndex","duplicate","objectOrArray","arrayLevel","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","mark","captureStackTrace","Mark","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","filename","onWarning","legacy","typeMap","lineIndent","documents","generateError","throwWarning","directiveHandlers","YAML","major","minor","checkLineBreaks","TAG","tagMap","captureSegment","checkJson","_position","_length","_character","mergeMappings","destination","overridableKeys","storeMappingPair","keyTag","keyNode","valueNode","startLine","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","readFlowCollection","terminator","isPair","isExplicitPair","isMapping","readNext","_anchor","anchor","anchorMap","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_pos","atExplicitKey","readTagProperty","tagHandle","isVerbatim","isNamed","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","construct","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","loadDocuments","nullpos","getSnippet","maxLength","snippet","where","compileList","exclude","include","includedSchema","currentType","previousType","previousIndex","compileMap","scalar","mapping","fallback","collectType","definition","implicit","loadKind","DEFAULT","schemas","every","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","NodeBuffer","BASE64_MAP","resolveYamlBinary","bitlen","constructYamlBinary","tailbits","bits","representYamlBinary","isBinary","resolveYamlBoolean","constructYamlBoolean","isBoolean","lowercase","uppercase","camelcase","YAML_FLOAT_PATTERN","resolveYamlFloat","constructYamlFloat","POSITIVE_INFINITY","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isFloat","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","constructYamlInteger","isInteger","binary","decimal","hexadecimal","esprima","resolveJavascriptFunction","constructJavascriptFunction","representJavascriptFunction","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","resolveYamlMerge","resolveYamlNull","constructYamlNull","isNull","canonical","resolveYamlOmap","pair","pairKey","pairHasKey","objectKeys","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","year","month","day","minute","tz_hour","tz_minute","fraction","setTime","representYamlTimestamp","trySimpleJsonRepair","escapeUnicodeChars","validate","isUrl","getWindow","getAbsoluteLeft","getAbsoluteTop","addClassName","removeAllClassNames","removeClassName","stripFormatting","setEndOfContentEditable","selectContentEditable","setSelection","getSelectionOffset","setSelectionOffset","getInnerText","hasParentNode","getInternetExplorerVersion","isFirefox","isChildOf","stringifyPath","improveSchemaError","isPromise","isValidValidationError","insideRect","textDiff","getInputSelection","getIndexForPosition","getPositionForPath","compileJSONPointer","getColorCSS","isValidColor","makeFieldTooltip","findUniqueName","getChildPaths","sortObjectKeys","parseString","isTimestamp","formatSize","limitCharacters","isValidationErrorChanged","javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__","javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default","simple_json_repair__WEBPACK_IMPORTED_MODULE_2__","simple_json_repair__WEBPACK_IMPORTED_MODULE_2___default","_assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__","_assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3___default","json_source_map__WEBPACK_IMPORTED_MODULE_4__","json_source_map__WEBPACK_IMPORTED_MODULE_4___default","_i18n__WEBPACK_IMPORTED_MODULE_5__","MAX_ITEMS_FIELDS_COLLECTION","YEAR_2000","jsonString","isUrlRegex","ownerDocument","pageXOffset","divElement","childs","childNodes","iMax","specified","contentEditableElement","collapse","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","nodeValue","trimmedValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","appName","ua","re","jsonPath","parseProperty","parseIndex","enums","more","additionalProperty","validationError","_margin","wait","immediate","later","callNow","oldText","newText","oldEnd","newEnd","normalizedValue","textInputRange","endRange","endIndex","selectionStart","selectionEnd","parentElement","createTextRange","moveToBookmark","getBookmark","compareEndPoints","moveStart","moveEnd","_positionForIndex","textTillIndex","substring","rows","columnCount","paths","jsmap","pointerName","pointers","ele","locale","examples","example","existingPropNames","strippedName","validName","includeObjects","pathsMap","getObjectChildPaths","rootPath","isValue","parsedPath","sortedArray","aValue","bValue","sortedFields","sortedObject","lower","numFloat","KB","MB","GB","TB","maxCharacterCount","currErr","prevErr","_loop","pErr","find","dataPath","schemaPath","_ret","setLanguage","setLanguages","_locales","_defs","en","auto","appendText","appendTitle","appendSubmenuTitle","appendTitleAuto","ascending","ascendingTitle","actionsMenu","cannotParseFieldError","cannotParseValueError","collapseAll","compactTitle","descending","descendingTitle","drag","duplicateKey","duplicateText","duplicateTitle","duplicateField","duplicateFieldError","expandAll","expandTitle","formatTitle","insert","insertTitle","insertSub","ok","redo","removeText","removeTitle","removeField","repairTitle","searchTitle","searchNextResultTitle","searchPreviousResultTitle","selectNode","showAll","showMore","showMoreStatus","sortTitle","sortTitleShort","sortFieldLabel","sortDirectionLabel","sortFieldTitle","sortAscending","sortAscendingTitle","sortDescending","sortDescendingTitle","transformTitle","transformTitleShort","extract","extractTitle","transformQueryTitle","transformWizardLabel","transformWizardFilter","transformWizardSortBy","transformWizardSelectFields","transformQueryLabel","transformPreviewLabel","typeTitle","openUrl","undo","validationCannotMove","autoType","objectType","arrayType","stringType","modeEditorTitle","modeCodeText","modeCodeTitle","modeFormText","modeFormTitle","modeTextText","modeTextTitle","modeTreeText","modeTreeTitle","modeViewText","modeViewTitle","modePreviewText","modePreviewTitle","containsInvalidProperties","containsInvalidItems","tr","ja","de","_defaultLang","userLang","language","userLanguage","_lang","langFound","languages","assign","dataKey","DEFAULT_MODAL_ANCHOR","SIZE_LARGE","MAX_PREVIEW_CHARACTERS","PREVIEW_HISTORY_LIMIT","ContextMenu","_createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__","_util__WEBPACK_IMPORTED_MODULE_1__","_i18n__WEBPACK_IMPORTED_MODULE_2__","_defineProperties","items","me","eventListeners","onClose","limitHeight","menu","focusButton","li","createMenuItems","domItems","_li","domItem","_li2","button","click","onclick","preventDefault","submenu","divIcon","buttonSubmenu","divText","buttonExpand","buttonExpandInner","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","overflow","buttons","expandedItem","subItem","showBelow","anchorRect","parentRect","frameRect","absoluteAnchor","topGap","anchorHeight","maxPossibleMenuHeight","overflowY","visibleMenu","alreadyVisible","childsHeight","targetIndex","prevButton","nextButton","keynum","which","handled","shiftKey","_getVisibleButtons","stopPropagation","createQuery","executeQuery","jmespath__WEBPACK_IMPORTED_MODULE_0__","jmespath__WEBPACK_IMPORTED_MODULE_0___default","queryOptions","projection","examplePath","exampleValue","value1","relation","showSortModal","picomodal__WEBPACK_IMPORTED_MODULE_0__","picomodal__WEBPACK_IMPORTED_MODULE_0___default","_i18n__WEBPACK_IMPORTED_MODULE_1__","_util__WEBPACK_IMPORTED_MODULE_2__","onSort","selectedPath","selectedDirection","overlayClass","overlayStyles","modalClass","afterCreate","modal","form","modalElem","preprocessPath","setDirection","onsubmit","afterClose","showTransformModal","picoModal","picoModal_default","selectr","selectr_default","i18n","stringifyPartial","space","_space","stringifyValue","stringifyArray","stringifyObject","childIndent","jsonUtils_hasOwnProperty","constants","DEFAULT_DESCRIPTION","_ref","_ref$queryDescription","queryDescription","onTransform","wizard","filterField","filterRelation","filterValue","sortField","sortOrder","selectFields","preview","textContent","sortablePaths","formattedPath","filterOption","sortOption","selectablePaths","selectFieldsPart","selectrFilterField","defaultSelected","clearable","allowDeselect","selectrFilterRelation","selectrSortField","selectrSortOrder","selectrSelectFields","updatePreview","transformed","disabled","generateQueryFromWizard","oninput","debouncedUpdatePreview","tryCreateQuery","selected","selectedField","__webpack_require__","SyntaxError","O","I","null","true","false","None","True","False","A","$","T","F","P","U","FocusTracker","onFocus","onBlur","_onClick","_onEvent","_onKeyUp","keyCode","focusFlag","firstEventFlag","ModeSwitcher","_ContextMenu__WEBPACK_IMPORTED_MODULE_0__","modes","onSwitch","availableModes","currentMode","currentTitle","searchable","sortSelected","closeOnScroll","nativeDropdown","taggable","tagPlaceholder","Events","_events","classList","addClass","removeClass","isInt","isset","appendItem","custom","createDocumentFragment","pagination","pages","pageIndex","customOption","childElementCount","navIndex","dismiss","opened","createItem","renderOption","role","build","requiresPagination","customClass","mobileDevice","tabIndex","dropdown","notice","tags","selectedValues","getSelectedProperties","selectedIndexes","selectClear","tagIndex","autocomplete","autocorrect","autocapitalize","spellcheck","tagSeperators","inputClear","inputContainer","optgroup","Option","setSelected","paginate","placeEl","setPlaceholder","insertBefore","navigate","change","prevEl","navigating","searching","lastElementChild","firstElementChild","optsRect","addTag","that","docFrag","customSelected","renderSelection","btn","ac","bc","ax","by","nn","localeCompare","tg","removeTag","atBottom","page","clearSearch","before","after","Selectr","originalType","originalIndex","originalOptionCount","bindEvents","selectedIndex","getSelected","events","changedTouches","toggle","getChangedOptions","added","removed","indexes","changes","deselect","setMessage","paginateItems","selectedValue","setValue","replaceChild","maxSelections","selIndex","valIndex","getValue","toObject","toJson","checkDuplicate","dupe","getOptionByIndex","getOptionByValue","removeMessage","firstEl","enable","serialise","serialize","oh","innerHeight","doInvert","isInverted","createAbsoluteAnchor","_util__WEBPACK_IMPORTED_MODULE_0__","onDestroy","destroyOnMouseOut","getRootNode","isOutside","destroyIfOutside","boxSizing","mousedown","mousewheel","destroyTimer","onmouseover","onmouseout","naturalSort","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","VanillaPicker","Picker","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","isNode","observable","callbacks","detail","unprevented","isHidden","Elem","buildOverlay","make","stylize","zIndex","background","styles","anyAncestor","isVisible","autoinc","buildModal","isCloseClick","buildClose","lineHeight","buildElemAccessor","builder","escapeKey","tabKey","manageFocus","iface","isEnabled","canFocus","firstFocusable","getElementsByTagName","lastFocusable","focused","beforeShow","afterShow","focusable","manageBodyOverflow","origOverflow","keycode","afterCreateEvent","beforeShowEvent","afterShowEvent","beforeCloseEvent","afterCloseEvent","defaultValue","built","shadowElem","closeElem","forceClose","returnIface","overlay","overlayElem","buildDom","beforeClose","ErrorTable","errorTableVisible","onToggleVisibility","onFocusLine","onChangeHeight","validationErrorsContainer","additionalErrorsIndication","validationErrorIcon","validationErrorCount","parseErrorIndication","errorLocations","validationErrors","tbody","errLoc","trEl","td1","td2","td34","colSpan","pre","td3","td4","_pre","onscroll","statusBar","validationErrorsCount","toggleTableVisibility","hasParseErrors","some","ace","jsonWorkerDataUrl","setModuleUrl","textModeMixins","simpleJsonRepair_min","simpleJsonRepair_min_default","ace_default","jmespathQuery","tryRequireThemeJsonEditor","validateCustom","onValidate","customValidateResults","resultPromise","customValidationPathErrors","warn","textmode","DEFAULT_THEME","mainMenuBar","enableSort","enableTransform","indentation","_ace","onTextSelectionChange","aceEditor","textarea","validateSchema","annotations","lastSchemaErrors","_debouncedValidate","DEBOUNCE_INTERVAL","onkeydown","_onKeyDown","focusTrackerConfig","frameFocusTracker","buttonFormat","_onChange","_onError","buttonCompact","_sort","_showSortModal","_showTransformModal","buttonRepair","repair","getSession","getUndoManager","modeSwitcher","setMode","poweredBy","emptyNode","onEditable","editorDom","edit","aceSession","$blockScrolling","setOptions","readOnly","setShowPrintMargin","setFontSize","setTabSize","setUseSoftTabs","setUseWrapMode","originalSetAnnotations","setAnnotations","commands","bindKey","_onSelect","onchange","onselect","_onMouseDown","onblur","_onBlur","_updateHistoryButtons","errorTable","isFocused","setTextSelection","statusBarHeight","totalHeight","marginBottom","paddingBottom","getErrorTable","curserInfoElements","lnLabel","lnVal","colLabel","colVal","countLabel","countVal","getErrorCounter","getWarningIcon","getErrorIcon","setSchema","schemaRefs","onChangeDisabled","onChange","onChangeText","getText","undoManager","hasUndo","hasRedo","modalAnchor","sortedBy","sortedJson","_sortedJson","_this3","_this$options","updatedJson","_updateCursorInfo","_emitSelectionChange","ctrlKey","selectionRange","cursorInfo","updateDisplay","curserPos","getCursorPosition","getSelectedText","_selectionChangedHandler","currentSelection","getTextSelection","_refreshAnnotations","session","errEnnotations","getAnnotations","annotation","updateText","repairedText","_setText","jsonText","clearHistory","_this4","escapeUnicode","_this5","schemaErrors","parseErrors","validationSequence","seq","customValidationErrors","_renderErrors","onValidationError","errorPaths","setErrors","aceSelection","getRange","lead","getSelectionLead","endPos","selectionScrollPos","_range","scrollToLine","jsonlint","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","defaultActions","parseError","vstack","lstack","recovering","TERROR","EOF","lexer","setInput","yylloc","yyloc","popStack","preErrorSymbol","newState","expected","yyval","errStr","showPosition","first_line","last_line","first_column","last_column","_input","_more","_less","done","conditionStack","unput","less","pastInput","past","upcomingInput","tempMatch","rules","_currentRules","flex","begin","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","polyfill","CharacterData","DocumentType","findIndex","escapedChars","A_CODE","bigint","BigInt","_parse","ptr","topLevel","whitespace","getChar","parseArray","parseObject","backChar","parseNumber","unexpectedToken","loop","getCharCode","wasUnexpectedToken","numStr","integer","getDigits","MIN_SAFE_INTEGER","itemPtr","getLoc","propPtr","escapeJsonPointer","mapLoc","checkUnexpectedEnd","validType","wsPos","wsColumn","wsLine","es6","Map","_stringify","lvl","quoted","BYTES_PER_ELEMENT","stringifyMapSet","Set","itemLvl","propLvl","isSet","entries","VALID_TYPES","ESC_QUOTE","ESC_B","ESC_F","ESC_N","ESC_R","ESC_T","ESC_0","ESC_1","strictDeepEqual","firstType","keysSeen","key2","isFalse","objValues","trimLeft","TYPE_NUMBER","TYPE_ANY","TYPE_STRING","TYPE_ARRAY","TYPE_OBJECT","TYPE_BOOLEAN","TYPE_EXPREF","TYPE_NULL","TYPE_ARRAY_NUMBER","TYPE_ARRAY_STRING","TOK_EOF","TOK_UNQUOTEDIDENTIFIER","TOK_QUOTEDIDENTIFIER","TOK_RBRACKET","TOK_RPAREN","TOK_COMMA","TOK_COLON","TOK_RBRACE","TOK_NUMBER","TOK_CURRENT","TOK_EXPREF","TOK_PIPE","TOK_OR","TOK_AND","TOK_EQ","TOK_GT","TOK_LT","TOK_GTE","TOK_LTE","TOK_NE","TOK_FLATTEN","TOK_STAR","TOK_FILTER","TOK_DOT","TOK_NOT","TOK_LBRACE","TOK_LBRACKET","TOK_LPAREN","TOK_LITERAL","basicTokens","operatorStartToken","skipChars","isAlpha","isNum","isAlphaNum","Lexer","stream","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","literal","_consumeLiteral","_consumeOperator","startingChar","literalString","_looksLikeJSON","startingChars","jsonLiterals","numberLooking","ex","bindingPower","TreeInterpreter","runtime","Runtime","interpreter","_interpreter","functionTable","_func","_functionAbs","_signature","avg","_functionAvg","_functionCeil","_functionContains","_functionEndsWith","_functionFloor","_functionLength","_functionMap","_functionMax","_functionMerge","variadic","_functionMaxBy","_functionSum","_functionStartsWith","_functionMin","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","_functionSortBy","_functionJoin","_functionReverse","_functionToArray","_functionToString","_functionToNumber","_functionNotNull","compile","_loadTokens","_lookahead","_lookaheadToken","rbp","leftToken","_advance","nud","currentToken","led","_parseProjectionRHS","Star","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","tokenName","Dot","_parseDotRHS","Pipe","Or","And","Filter","leftNode","rightNode","_parseComparator","tokenType","_parseSliceExpression","indexExpr","comparator","exprTokens","keyName","pairs","identifierTypes","collected","sliceParams","computeSliceParams","filtered","finalResults","resolvedArgs","callFunction","refNode","jmespathType","arrayLength","stepValueNegative","capSliceRange","actualValue","functionEntry","_validateArgs","signature","pluralized","currentSpec","actualType","typeMatched","_getTypeName","_typeMatches","argValue","subtype","searchStr","typeName","originalStr","reversedStr","reversedArray","inputArray","mapped","exprefNode","maxElement","minElement","listToSum","joinChar","listJoin","convertedValue","requiredType","decorated","exprA","exprB","maxRecord","resolvedArray","keyFunction","createKeyFunction","maxNumber","minRecord","minNumber","allowedTypes","keyFunc","_require","treeModeMixins","_require2","_require3","previewModeMixins","_require4","_require5","tryRequireAjv","_require6","_require7","Ajv","JSONEditor","ieVersion","onError","editable","onChangeJSON","VALID_OPTIONS","_create","setName","oldMode","asText","onModeChange","getMode","ajv","allErrors","verbose","schemaId","$data","addMetaSchema","ref","removeSchema","addSchema","registerMode","acequire","isDark","cssClass","importCssString","defaultFilterFunction","confirmKeys","caseSensitive","wrapper","outline","spacer","leftSide","dropDown","visibility","createDropDownController","rs","ix","oldIndex","onMouseOver","onMouseOut","onMouseDown","onmouseselection","__hint","vph","distanceToTop","distanceToBottom","filterFn","divRow","move","setEndOfContenteditable","moveToElementText","calculateWidthForText","whiteSpace","onArrowDown","onArrowUp","onEnter","onTab","startFrom","elementHint","elementStyle","getPropertyValue","marginLeft","marginTop","cloneNode","onfocus","keyDownHandler","onBlurHandler","repaint","hideDropDown","dropDownController","optionsLength","realInnerText","wasDropDownHidden","_token","_m","Highlighter","locked","setHighlight","_cancelUnhighlight","unhighlightTimer","naturalSort_default","appendNodeFactory","AppendNode","editor","_updateEditability","trAppend","tdDrag","tdMenu","tdAppend","domText","td","updateDom","getPath","getIndex","paddingLeft","getLevel","showContextMenu","appendSubmenu","_onAppend","addTemplates","onCreateMenu","getPopupAnchor","onEvent","srcElement","highlighter","unhighlight","lock","unlock","onKeyDown","showMoreNodeFactory","ShowMoreNode","showMoreButton","visibleChilds","getMaxVisibleChilds","showChilds","showAllButton","moreContents","moreText","_getShowMoreText","tdContents","moreTr","nextTr","_getNextTr","totalChilds","expanded","js_showSortModal","js_showTransformModal","_createForOfIteratorHelper","allowArrayLike","_unsupportedIterableToArray","_e","normalCompletion","didErr","_e2","minLen","_arrayLikeToArray","arr2","Node_classCallCheck","Node_defineProperties","Node_createClass","Node_Node","setField","fieldEditable","setInternalValue","internalValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","maxVisibleChilds","DEFAULT_MAX_VISIBLE_CHILDS","internalPath","findNodeByPath","childIndex","parents","errorChild","updateError","fieldError","valueError","tdError","tdValue","popupAnchor","createPopup","popupWidth","buttonRect","popover","findParents","scrollTo","previousField","_getDomField","childValue","previousChilds","_getType","visible","Node_hasOwnProperty","childField","_child","findChildByProperty","newChild","_visible","triggerAction","hideChilds","append","recreateDom","updateIndexes","previousValue","notUpdateDom","domAnchor","_detachFromDom","clearDom","_attachToDom","getField","_getDomValue","getInternalValue","getNodePath","fieldInnerText","valueInnerText","cloneChilds","childClone","setParent","recurse","getAppendDom","nextSibling","getShowMoreDom","resetVisibleChilds","onClassName","addClasses","_updateCssClassName","recursivelyUpdateCssClassesOnNodes","currentNode","_hasChilds","newTr","beforeNode","trTemp","Node_AppendNode","lastVisibleNode","afterNode","results","searchField","searchValue","MAX_SEARCH_RESULTS","_updateDomField","_updateDomValue","expandPathToNode","focusElement","containsNode","removedNode","newType","oldType","deepEqual","_clearValueError","_unescapeHTML","_setValueError","oldSelection","getDomSelection","undoDiff","newSelection","redoDiff","_onAction","getInternalPath","oldValue","parentPath","domValue","classNames","valueType","valueIsUrl","searchValueActive","checkbox","tdCheckbox","getUTCMilliseconds","tdSelect","valueFieldHTML","colorPicker","tdColor","_deleteDomColor","_showTimestampTag","timestampFormat","_updateDomDefault","domField","searchFieldActive","forceUnique","_clearFieldError","existingFieldNames","getFieldNames","isDuplicate","_setFieldError","inputElement","timestampTag","domDrag","tdField","_createDomTree","isFirst","domTree","fieldText","contentEditable","_findSchema","escapedField","_escapeHTML","_updateSchema","updateNodeName","escapedValue","_updateDomIndexes","_findEnum","borderCollapse","tdExpand","_createDomExpandButton","_createDomField","tdSeparator","_createDomValue","expandable","_onExpand","_showColorPicker","hasMoved","pageX","isField","info","prevNode","nextNode","nextDom","nextDom2","oldNextNode","oldParent","oldIndexRedo","newIndexRedo","oldParentPathRedo","newParentPathRedo","multiselection","altKey","selectedNodes","firstNode","lastNode","onDuplicate","onRemove","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","getNodeFromTarget","nextNode2","moveBefore","fieldNames","oldParentPath","newParentPath","newIndex","_previousNode","_findTopLevelNodes","nextElement","_nextElement","prevDom","previousSibling","_nextNode","_nextNode2","onColorPicker","colorAnchor","excludeNode","newNode","beforePath","insertAfter","afterPath","changeType","oldChilds","order","nodeA","getNestedChild","nodeB","valueA","valueB","newChilds","lastTr","oldInternalValue","newInternalValue","_setRoot","Node_ShowMoreNode","firstDom","lastDom","lastChild","templates","insertData","template","_onChangeType","insertSubmenu","pathArray","_this$editor$options","htmlEscaped","escapedText","_escapeJSON","escaped","onNodeName","recursivelyUpdateNodeName","editableDiv","onDragStart","draggedNode","mousemove","onDrag","mouseup","onDragEnd","oldCursor","oldPaths","mouseX","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topPrev","topFirst","bottomNext","heightNext","mouseY","pageY","moved","trThis","topThis","heightThis","limitDragging","diffX","diffLevel","levelNext","isDraggedNode","isDescendantOf","startAutoScroll","sameParent","stopAutoScroll","composite","oneOf","anyOf","allOf","topLevelSchema","currentSchema","nextPath","nextKey","possibleSchemas","_iterator","$ref","startsWith","refPath","_step2","_iterator2","segment","patternProperties","blurNodes","clones","clonePaths","targetIsColorPicker","NodeHistory_classCallCheck","NodeHistory_defineProperties","NodeHistory_createClass","NodeHistory_NodeHistory","NodeHistory","findNode","findNodeByInternalPath","history","editField","updateField","editValue","updateValue","appendNodes","insertBeforeNodes","insertAfterNodes","removeNodes","duplicateNodes","moveNodes","oldParentNode","newParentNode","oldBeforeNode","newBeforeNode","timestamp","canUndo","setDomSelection","canRedo","SearchBox_classCallCheck","SearchBox_defineProperties","SearchBox_createClass","SearchBox_SearchBox","SearchBox","searchBox","lastText","divInput","refreshSearch","_onDelayedSearch","_onSearch","onkeyup","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevElem","_clearDelay","forceSearch","activeResultIndex","resultCount","TreePath_classCallCheck","TreePath_defineProperties","TreePath_createClass","TreePath_TreePath","TreePath","contentMenuClicked","pathObjs","_onShowAllClick","setPath","_onSegmentClick","pathObj","selectionCallback","_onContextMenuItemClick","contextMenuCallback","sepEl","pathEl","leftRectPos","showAllBtn","vanilla_picker","vanilla_picker_default","treemode","errorNodes","focusTarget","_setOptions","_createFrame","_createTable","navigationBar","onSelectionChange","pickerHeight","windowHeight","showOnTop","popup","onDone","rgba","repairedJsonText","repairJsonText","scrollableContent","treePath","selectedNode","_updateTreePath","_validateCustom","_renderValidationErrors","setError","parentPairs","autoScrollStep","autoScrollTimer","domName","animateCallback","animateTimeout","finalScrollTop","animate","contentOuter","oncut","onpaste","onmouseup","onfocusin","onfocusout","_onUndo","_onRedo","navBar","onSectionSelected","_onTreePathSectionSelected","onContextMenuItemSelected","_onTreePathMenuItemSelected","_showAutoComplete","_startDragDistance","_updateDragDistance","_onMultiSelectStart","pathNodes","childNode","expandTo","selectionObj","dragDistanceEvent","initialTarget","initialPageX","initialPageY","dragDistance","diffY","_onMultiSelect","_onMultiSelectEnd","clearStartAndEnd","selectionChanged","startPath","endPath","startChild","endChild","jsonElementType","getOptions","metaKey","colgroupContent","selection1","selection2","_getNodeInstancesByRange","serializableNodes","History","calculateItemSize","_calculateHistorySize","totalSize","previewmode_textmode","previewmode","busy","busyContent","previewContent","previewText","executeWithBusyMessage","onHistoryChange","_applyHistory","fileSizeInfo","arrayInfo","_renderPreview","_setAndFireOnChange","_setTextAndFireOnChange","_set","_pushHistory","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheHas","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayMap","iteratee","baseAssignValue","eq","objectProto","objValue","assocIndexOf","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag","isMasked","toSource","reRegExpChar","reIsHostCtor","funcProto","funcToString","reIsNative","baseIsNative","castPath","isIndex","toKey","baseSet","customizer","nested","isSymbol","INFINITY","symbolToString","baseToString","isKey","stringToPath","coreJsData","freeGlobal","isKeyable","getMapData","__data__","nativeObjectToString","isOwn","unmasked","nativeCreate","HASH_UNDEFINED","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","arrayProto","memoize","MAX_MEMOIZE_SIZE","memoizeCapped","freeSelf","rePropName","reEscapeChar","subString","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","debounced","isInvoking","asyncTag","funcTag","genTag","proxyTag","isObjectLike","symbolTag","VERSION","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","domExcTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsOctal","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","hasUnicodeWord","iteratorToArray","overArg","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","unicodeWords","runInContext","pick","idCounter","objectCtorString","oldDash","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","WeakMap","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","lazyValue","isArr","isRight","getView","iteratees","iterLength","takeCount","baseWrapperValue","outer","iterIndex","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","upper","baseClone","bitmask","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFill","toInteger","toLength","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","baseGetAllKeys","symbolsFunc","baseGt","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","seen","baseInverter","baseInvoke","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","basePropertyDeep","basePullAll","basePullAt","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","cloneArrayBuffer","arrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createBind","isBind","createCtor","createCaseFirst","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","toFinite","createRelationalOperation","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","setWrapToString","createRound","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrValue","othValue","compared","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","flatten","otherFunc","stubArray","transforms","getWrapDetails","hasPath","hasFunc","insertWrapDetails","details","ctorString","isMaskable","stubFalse","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","lastCalled","stamp","rand","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","findLastIndex","flattenDeep","flattenDepth","fromPairs","initial","intersection","intersectionBy","intersectionWith","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","tap","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","countBy","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","invokeMap","keyBy","orderBy","partition","reduceRight","negate","sampleSize","shuffle","sortBy","curryRight","defer","flip","resolver","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","rest","unary","wrap","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gte","isElement","isEqual","isEqualWith","isError","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","lt","lte","toSafeInteger","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forInRight","forOwn","forOwnRight","functions","functionsIn","invertBy","invoke","mapKeys","mapValues","omit","omitBy","pickBy","setWith","toPairs","toPairsIn","isArrLike","unset","updateWith","valuesIn","inRange","floating","temp","word","capitalize","upperFirst","endsWith","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","strLength","padEnd","padStart","radix","snakeCase","startCase","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trimEnd","trimStart","omission","unescape","upperCase","bindAll","methodNames","conforms","defaultTo","flow","flowRight","matchesProperty","methodOf","noConflict","nthArg","over","overEvery","overSome","propertyOf","rangeRight","stubObject","stubString","stubTrue","toPath","uniqueId","augend","addend","dividend","divisor","maxBy","mean","meanBy","minBy","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","sumBy","entriesIn","extendWith","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","XHR","Handler","Util","Random","RE","toJSONSchema","Mock","heredoc","setup","_mocked","mock","rurl","rtype","gen","Constant","GUID","templatePath","currentContext","templateCurrentContext","templateRoot","rule","parsedName","RE_KEY","ii","__order_index","fnKeys","inc","dcount","boolean","bool","placeholders","ph","phed","RE_PLACEHOLDER","_all","templateContext","lkey","okey","pathParts","splitPathToArray","eval","getValueByKeyPath","originalKey","keyPathParts","absolutePathParts","normalizePath","newPathParts","RE_RANGE","isObjectOrArray","dmin","dmax","cur","natural","float","pool","pools","patternLetters","yyyy","MM","dd","HH","getHours","hh","mm","getMinutes","ss","getSeconds","SS","ms","getMilliseconds","_patternLetters","_rformat","_formatDate","creatNewSubString","flag","_randomDate","datetime","unit","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getDay","_adSize","_screenSize","_videoSize","foreground","_brandColors","_brandNames","brands","dataImage","Canvas","getContext","text_height","textBaseline","fillStyle","fillRect","fillText","webpackPolyfill","deprecate","Convert","DICT","nicer","hsv","_goldenRatioColor","rgb","hsv2rgb","rgb2hex","hsl","hsv2hsl","saturation","_goldenRatio","_hue","rgb2hsl","rgb2hsv","hsl2rgb","t1","t2","t3","hsl2hsv","sv","sl","hex2rgb","navy","blue","aqua","teal","olive","green","lime","yellow","orange","red","maroon","fuchsia","purple","silver","gray","black","white","Basic","Helper","defaultMin","defaultMax","paragraph","sentence","cparagraph","csentence","cword","DICT_KANZI","ctitle","old","cfirst","clast","cname","tld","email","ip","REGION","province","city","county","pid","parentId","DICT_FIXED","fixed","d4","d6","d8","d12","d20","d100","guid","uuid","increment","Token","Alternate","Match","CaptureGroup","cgs","Quantified","quantifier","Quantifier","greedy","CharSet","CharacterRange","Unicode","Hex","Octal","BackReference","ControlCharacter","Lt","qt","seenCR","Mt","Dt","Ht","Ot","fl","Wt","il","al","hl","dl","Q","B","pl","vl","wl","Al","Cl","gl","bl","Tl","kl","C","xl","yl","ml","Rl","Fl","Ql","Sl","Ul","El","Gl","Bl","jl","$l","ql","Ll","Ml","Dl","Hl","Ol","Wl","zl","Il","Jl","Kl","Nl","R","Pl","Vl","Xl","Yl","Zl","_l","lu","uu","tu","ru","eu","ou","iu","au","fu","su","hu","cu","pu","vu","wu","du","G","Au","Cu","gu","bu","L","Y","W","J","K","N","V","X","nl","ll","tl","ku","Tu","xu","Ru","yu","D","Z","Fu","Qu","Su","Uu","Eu","Gu","Bu","ju","$u","qu","Lu","Du","Hu","Ou","Wu","zu","Iu","Ju","Ku","Pu","Vu","Xu","Yu","Zu","_u","nt","ut","tt","et","ot","ct","ft","st","ht","dt","vt","wt","At","Ct","bt","kt","Tt","xt","yt","mt","Rt","Ft","Qt","St","Ut","Et","Gt","Bt","jt","$t","rl","ol","cl","startRule","LOWER","ascii","UPPER","NUMBER","OTHER","PRINTABLE","SPACE","CHARACTER_CLASSES","to","quantified","charset","characters","iii","unicode","CONTROL_CHARACTER_MAP","CONTROL_CHARACTER","CONTROL_CHARACTER_UNICODE","Diff","Assert","equal","actualRepeatCount","templateType","greaterThanOrEqualTo","lessThanOrEqualTo","notEqual","greaterThan","lessThan","_XMLHttpRequest","_ActiveXObject","ActiveXObject","Event","bubbles","cancelable","createEvent","initCustomEvent","XHR_STATES","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","XHR_EVENTS","XHR_REQUEST_PROPERTIES","XHR_RESPONSE_PROPERTIES","HTTP_STATUS_CODES","MockXMLHttpRequest","createNativeXMLHttpRequest","isLocal","rlocalProtocol","ajaxLocation","ajaxLocParts","createStandardXHR","createActiveXHR","sUrlType","_settings","xhr","dispatchEvent","getResponseHeader","overrideMimeType","responseXML","handles","ontype","VueClipboardConfig","autoSetContainer","VueClipboard","install","Vue","$clipboardConfig","$copyText","fake_el","clipboard","vnode","_v_clipboard_success","_v_clipboard_error","_v_clipboard","unbind","numberFormatKeys","OBJECT_STRING","parseArgs","looseClone","hasOwn","arguments$1","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","_i18n","$i18n","_t","_getMessages","$tc","choice","_tc","$te","_te","$d","$n","__i18n","VueI18n","localeMessages","resource","mergeLocaleMessage","_i18nWatcher","watchI18nData","rootI18n","fallbackLocale","formatFallbackMessages","silentTranslationWarn","silentFallbackWarn","pluralizationRules","preserveDirectiveContent","localeMessages$1","messages","sharedMessages","sync","_localeWatcher","watchLocale","onComponentInstanceCreated","beforeMount","subscribeDataChanging","_subscribing","beforeDestroy","$nextTick","unsubscribeDataChanging","destroyVM","interpolationComponent","required","places","slots","onlyHasDefaultPlace","useLegacyPlaces","createParamsFromPlaces","everyPlace","vnodeHasPlaceAttribute","assignChildPlace","assignChildIndex","attrs","place","numberComponent","_ntp","slot","scopedSlots","oldVNode","localeEqual","_localeMessage","getLocaleMessage","vm","preserve","_vt","_locale","ref$1","ref$2","parseValue","tc","makeParams","_Vue","installed","strats","optionMergeStrategies","parentVal","childVal","BaseFormatter","_caches","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","isClosed","compiled","APPEND","PUSH","INC_SUB_PATH_DEPTH","PUSH_SUB_PATH","BEFORE_PATH","IN_PATH","BEFORE_IDENT","IN_IDENT","IN_SUB_PATH","IN_SINGLE_QUOTE","IN_DOUBLE_QUOTE","AFTER_PATH","ERROR","pathStateMachine","literalValueRE","isLiteral","stripQuotes","getPathCharType","formatSubPath","trimmed","parse$1","newChar","transition","subPathDepth","maybeUnescapeQuote","I18nPath","_cache","hit","getPathValue","availabilities","htmlTagMatcher","linkKeyMatcher","linkKeyPrefixMatcher","bracketsMatcher","defaultModifiers","toLocaleUpperCase","toLocaleLowerCase","defaultFormatter","this$1","dateTimeFormats","numberFormats","_formatter","_modifiers","_missing","missing","_root","_sync","_fallbackRoot","fallbackRoot","_formatFallbackMessages","_silentTranslationWarn","_silentFallbackWarn","_dateTimeFormatters","_numberFormatters","_path","_dataListeners","_componentInstanceCreatedListener","componentInstanceCreatedListener","_preserveDirectiveContent","_warnHtmlInMessage","warnHtmlInMessage","_postTranslation","postTranslation","getChoiceIndex","choicesLength","thisPrototype","prototypeGetChoiceIndex","defaultImpl","_choice","_choicesLength","_exist","_checkLocaleMessage","_initVM","prototypeAccessors","availableLocales","$destroy","$forceUpdate","$set","newI18n","_getDateTimeFormats","_getNumberFormats","_localeChainCache","orgLevel","_warnDefault","interpolateMode","missingRet","parsedArgs","_render","_isFallbackRoot","_isSilentFallbackWarn","_isSilentFallback","_isSilentTranslationWarn","_interpolate","visitedLinkStack","pathRet","_link","linkKeyPrefixMatches","linkPrefix","formatterName","linkPlaceholder","translated","_translate","_appendItemToChain","blocks","follow","_appendLocaleToChain","_appendBlockToChain","_getLocaleChain","predefined","fetchChoice","choices","te","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","_clearDateTimeFormat","mergeDateTimeFormat","_localizeDateTime","formats","Intl","DateTimeFormat","_d","getNumberFormat","setNumberFormat","_clearNumberFormat","mergeNumberFormat","_getNumberFormatter","NumberFormat","_n","numberFormat","formatToParts","intlDefined","dateTimeFormat","JsonBox","expandDepth","copyable","boxed","timeformat","previewMode","provide","copied","expandableCode","expandCode","jvClass","copiedText","onResized","debounceResized","debResized","$refs","jsonBox","onCopied","toggleExpandCode","inject","initEvent","class","domProps","jsonValue","canExtend","itemRef","holderRef","ordered","injections","__file","_v","_s","_withStripped","hmr","locals","sourceRoot","atob","HTMLIFrameElement","contentDocument","refs","sourceMap","insertInto","insertAt","singleton","URL","createObjectURL","revokeObjectURL","Blob","rel","convertToAbsoluteUrls","DEBUG","needQuotes","isRouterError","errorType","_isRouter","View","routerView","route","$route","_routerViewCache","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","prepatch","componentInstance","propsToPass","resolveProps","encodeReserveRE","encodeReserveReplacer","commaRE","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","stringifyQuery","trailingSlashRE","createRoute","redirectedFrom","router","fullPath","getFullPath","formatMatch","freeze","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","isIncludedRoute","queryIncludes","resolvePath","relative","firstChar","segments","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","capture","modifier","asterisk","optional","escapeGroup","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","groups","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","_normalized","params$1","rawPath","basePath","toTypes","eventTypes","Link","exact","activeClass","exactActiveClass","ariaCurrentValue","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","scopedSlot","$scopedSlots","$hasNormal","isActive","isExactActive","findAnchor","$slots","aData","handler$1","event$1","aAttrs","defaultPrevented","isDef","registerInstance","callVal","_parentVnode","_router","defineReactive","_route","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","compileRouteRegex","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","performance","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","isPop","app","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","catch","saveScrollPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","hashStartsWithNumberRE","getElementById","supportsPushState","runQueue","queue","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","resolvedDef","isESModule","resolved","comp","hasSymbol","called","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","propertiesToLog","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","deactivated","extractGuards","guards","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","cbs","isValid","bindEnterGuard","poll","_isBeingDestroyed","onReady","errorCb","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","postEnterCbs","enterGuards","resolveHooks","setupListeners","teardownListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","decodeURI","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","pushHash","searchIndex","getUrl","AbstractHistory","VueRouter","apps","matcher","registerHook","createHref","$once","beforeEach","beforeResolve","afterEach","forward","getMatchedComponents","normalizedTo","emptyObject","isUndef","isTrue","isPrimitive","isValidArrayIndex","expectsLowerCase","isReservedAttribute","cached","camelizeRE","camelize","hyphenateRE","hyphenate","polyfillBind","boundFn","nativeBind","_from","no","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","productionTip","devtools","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","_isServer","inWeex","WXEnvironment","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","Reflect","ownKeys","Dep","subs","addSub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","cloned","arrayMethods","methodsToPatch","inserted","ob","__ob__","observeArray","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","toVal","fromVal","mergeDataOrFn","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","isSameType","expectedTypes","handleError","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","setImmediate","counter","observer","textNode","_resolve","seenObjects","_traverse","isA","isFrozen","depId","passive","once$$1","createFnInvoker","invoker","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","checkProp","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","name$1","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","bindObject","scopedSlotFn","resolveFilter","isKeyNotMatch","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_q","_f","_k","_b","_g","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","mountedNode","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","applyNS","registerDeepBindings","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","ensureCtor","errorComp","owner","owners","loading","loadingComp","timerLoading","timerTimeout","$on","renderCompleted","getFirstComponentChild","initEvents","_hasHookEvent","updateComponentListeners","remove$1","$off","onceHandler","oldListeners","eventsMixin","hookRE","i$1","setActiveInstance","prevActiveInstance","initLifecycle","$children","_watcher","lifecycleMixin","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","timeStamp","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","lazy","active","newDeps","depIds","newDepIds","cleanupDeps","sharedPropertyDefinition","sourceKey","initState","initMethods","initComputed","initWatch","propsOptions","isRoot","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$delete","uid$3","initMixin","_init","_uid","initInternalComponent","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","sealed","sealedOptions","initUse","plugin","installedPlugins","_installedPlugins","initMixin$1","initExtend","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","builtInComponents","initGlobalAPI","configDef","delete","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringified","namespaceMap","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","isTextInputType","createElement$1","createElementNS","createComment","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refInFor","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","activate","ref$$1","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","isRenderedModule","inVPre","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_enterCb","appearClass","appearToClass","appearActiveClass","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","_vOptions","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","kept","prevChildren","rawChildren","transitionData","c$1","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","WebkitTransform","_moveCb","propertyName","_hasMove","newPos","oldPos","platformComponents","__WEBPACK_EXTERNAL_MODULE_vue__","_VIcon__WEBPACK_IMPORTED_MODULE_1__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_2__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_3__","_mixins_transitionable__WEBPACK_IMPORTED_MODULE_4__","_util_mixins__WEBPACK_IMPORTED_MODULE_5__","dismissible","validator","computedColor","computedIcon","genIcon","genDismissible","setTextColor","alert","_VAlert__WEBPACK_IMPORTED_MODULE_0__","_mixins_app_theme__WEBPACK_IMPORTED_MODULE_1__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_2__","_directives_resize__WEBPACK_IMPORTED_MODULE_3__","__assign","Resize","dark","$vuetify","rtl","themeClasses","_VApp__WEBPACK_IMPORTED_MODULE_0__","_util_theme__WEBPACK_IMPORTED_MODULE_0__","parsedTheme","generatedStyles","themeCache","customProperties","minifyTheme","vueMeta","cspNonce","nonce","metaInfo","applyTheme","$meta","$ssrContext","genStyle","_VSelect_VSelect__WEBPACK_IMPORTED_MODULE_1__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_2__","_util_helpers__WEBPACK_IMPORTED_MODULE_3__","defaultMenuProps","offsetOverflow","allowOverflow","browserAutocomplete","queryText","itemText","hideNoData","noFilter","searchInput","menuProps","autoSelectFirst","attrsInput","lazySearch","computedItems","filteredItems","selectedItems","hasDisplayedItems","hideSelected","hasItem","currentRange","selectedItem","isSearching","internalSearch","allItems","isAnyValueAllowed","isDirty","searchIsDirty","menuCanShow","$_menuProps","contentClass","valueComparator","listData","virtualizedItems","onFilteredItemsChanged","setSearch","updateSelf","isMenuActive","hasSlot","activateMenu","onInternalSearchChanged","setMenuIndex","updateMenuDimensions","updateDimensions","changeSelectedIndex","backspace","currentItem","getDisabled","selectItem","clearableCallback","genInput","genSelections","isDisabled","onEnterDown","onInput","resetSelections","badInput","validity","onTabDown","setSelectedItems","updateAutocomplete","_VAutocomplete__WEBPACK_IMPORTED_MODULE_0__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_1__","_util_helpers__WEBPACK_IMPORTED_MODULE_2__","_util_mixins__WEBPACK_IMPORTED_MODULE_3__","tile","_a","_VAvatar__WEBPACK_IMPORTED_MODULE_0__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_2__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_3__","overlap","badge","_VBadge__WEBPACK_IMPORTED_MODULE_0__","_mixins_applicationable__WEBPACK_IMPORTED_MODULE_1__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_2__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_3__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_4__","mandatory","absolute","computedHeight","updateApplication","_VBottomNav__WEBPACK_IMPORTED_MODULE_0__","_VDialog_VDialog__WEBPACK_IMPORTED_MODULE_1__","fullWidth","hideOverlay","inset","activator","$props","noClickAnimation","_VBottomSheet__WEBPACK_IMPORTED_MODULE_0__","___WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_3__","_util_mixins__WEBPACK_IMPORTED_MODULE_4__","divider","justifyCenter","justifyEnd","genChildren","createDividers","genDivider","genItems","_mixins_routable__WEBPACK_IMPORTED_MODULE_0__","_util_mixins__WEBPACK_IMPORTED_MODULE_1__","generateRouteLink","VBreadcrumbsDivider","_VBreadcrumbs__WEBPACK_IMPORTED_MODULE_0__","_VBreadcrumbsItem__WEBPACK_IMPORTED_MODULE_1__","$_vuetify_subcomponents","VBreadcrumbs","VBreadcrumbsItem","_VProgressCircular__WEBPACK_IMPORTED_MODULE_2__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_4__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_5__","_mixins_routable__WEBPACK_IMPORTED_MODULE_6__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_7__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_8__","_util_helpers__WEBPACK_IMPORTED_MODULE_9__","baseMixins","depressed","fab","flat","ripple","small","computedRipple","defaultRipple","btnToggle","genContent","genLoader","indeterminate","onRouteChange","_VBtn__WEBPACK_IMPORTED_MODULE_0__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_1__","_VBtnToggle__WEBPACK_IMPORTED_MODULE_0__","_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_0__","_util_props__WEBPACK_IMPORTED_MODULE_1__","_util_timestamp__WEBPACK_IMPORTED_MODULE_2__","_VCalendarMonthly__WEBPACK_IMPORTED_MODULE_3__","_VCalendarDaily__WEBPACK_IMPORTED_MODULE_4__","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_5__","weeks","intervals","lastStart","lastEnd","parsedValue","parsedStart","today","renderProps","around","maxDays","getStartOfWeek","getEndOfWeek","parsedEnd","checkChange","amount","mover","timeToY","minutesToPixels","minutes","scrollToTime","_directives_resize__WEBPACK_IMPORTED_MODULE_1__","_mixins_calendar_with_intervals__WEBPACK_IMPORTED_MODULE_2__","__read","ar","__spread","scrollPush","onResize","getScrollPush","area","scrollArea","pane","genHead","marginRight","genHeadIntervals","genHeadDays","days","genHeadDay","dayHeader","getRelativeClasses","getDefaultMouseEventHandlers","getSlotScope","genHeadWeekday","genHeadDayLabel","present","weekdayFormatter","shortWeekdays","getMouseEventHandlers","prevent","dayFormatter","genBody","genScrollArea","genPane","bodyHeight","genDayContainer","genBodyIntervals","genDays","genDay","dayBody","getTimestampAtEvent","genDayIntervals","genDayInterval","intervalHeight","styler","intervalStyle","intervalStyleDefault","genIntervalLabels","genIntervalLabel","short","shortIntervals","shower","showIntervalLabel","showIntervalLabelDefault","intervalFormatter","dragstart","quiet","hideHeader","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_1__","_mixins_calendar_base__WEBPACK_IMPORTED_MODULE_1__","_util_props__WEBPACK_IMPORTED_MODULE_2__","_util_timestamp__WEBPACK_IMPORTED_MODULE_3__","parsedMinWeeks","minWeeks","minDays","weekdays","weekdaySkips","todayWeek","monthFormatter","monthFormat","longOptions","timeZone","shortOptions","_tms","dayIdentifier","outside","genWeeks","weekDays","genWeek","week","slotData","hasMonth","showMonthOnFirst","genDayLabel","genDayMonth","dayLabel","dayMonth","shortMonths","_VCalendar__WEBPACK_IMPORTED_MODULE_0__","_VCalendarDaily__WEBPACK_IMPORTED_MODULE_1__","_VCalendarWeekly__WEBPACK_IMPORTED_MODULE_2__","VCalendar","VCalendarDaily","VCalendarWeekly","VCalendarMonthly","_util_mixins__WEBPACK_IMPORTED_MODULE_0__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_1__","_times__WEBPACK_IMPORTED_MODULE_3__","_mouse__WEBPACK_IMPORTED_MODULE_4__","_util_props__WEBPACK_IMPORTED_MODULE_5__","_util_timestamp__WEBPACK_IMPORTED_MODULE_6__","dayFormat","_short","weekdayFormat","weekday","future","_calendar_base__WEBPACK_IMPORTED_MODULE_0__","parsedFirstInterval","firstInterval","parsedIntervalMinutes","intervalMinutes","parsedIntervalCount","intervalCount","parsedIntervalHeight","firstMinute","intervalFormat","hour12","shortHourOptions","tms","bounds","baseMinutes","touchEvent","mouseEvent","touches","clientY","addIntervals","addMinutes","vue__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_0___default","getEvent","_loop_1","eventOptions","this_1","_util_timestamp__WEBPACK_IMPORTED_MODULE_1__","parsedNow","updateTimes","setPresent","updateDay","updateTime","_timestamp__WEBPACK_IMPORTED_MODULE_0__","validateNumber","PARSE_REGEX","PARSE_TIME","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","DAYS_IN_MONTH_MIN","DAYS_IN_MONTH_MAX","MONTH_MAX","MONTH_MIN","DAY_MIN","DAYS_IN_WEEK","MINUTES_IN_HOUR","HOURS_IN_DAY","FIRST_HOUR","getStartOfMonth","getEndOfMonth","parseTime","validateTimestamp","parseTimestamp","getDayIdentifier","getTimeIdentifier","updateRelative","updateMinutes","updateWeekday","updateFormatted","getWeekday","isLeapYear","daysInMonth","copyTimestamp","padNumber","nextMinutes","nextDay","prevDay","relativeDays","findWeekday","getWeekdaySkips","createDayList","createIntervalList","createNativeLocaleFormatter","hasTime","hasDay","padded","skips","filled","currentIdentifier","stopped","mins","emptyFormatter","intlFormatter","_VSheet__WEBPACK_IMPORTED_MODULE_1__","_mixins_routable__WEBPACK_IMPORTED_MODULE_2__","hover","raised","_VImg_VImg__WEBPACK_IMPORTED_MODULE_0__","_util_console__WEBPACK_IMPORTED_MODULE_1__","primaryTitle","VCardActions","VCardText","_util_helpers__WEBPACK_IMPORTED_MODULE_0__","_VCard__WEBPACK_IMPORTED_MODULE_1__","_VCardMedia__WEBPACK_IMPORTED_MODULE_2__","_VCardTitle__WEBPACK_IMPORTED_MODULE_3__","VCard","VCardMedia","VCardTitle","_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_1__","_VBtn__WEBPACK_IMPORTED_MODULE_2__","_VIcon__WEBPACK_IMPORTED_MODULE_3__","_mixins_button_group__WEBPACK_IMPORTED_MODULE_4__","_util_helpers__WEBPACK_IMPORTED_MODULE_5__","_util_console__WEBPACK_IMPORTED_MODULE_6__","delimiterIcon","hideControls","hideDelimiters","nextIcon","prevIcon","changedByDelimiters","internalHeight","slideTimeout","light","restartTimeout","startTimeout","genDelimiters","genIcons","icons","updateReverse","touchless","genContainer","_VWindow_VWindowItem__WEBPACK_IMPORTED_MODULE_0__","_VImg__WEBPACK_IMPORTED_MODULE_1__","genDefaultSlot","windowGroup","onBeforeEnter","onAfterEnter","onBeforeLeave","onEnterCancelled","_VCarousel__WEBPACK_IMPORTED_MODULE_0__","_VCarouselItem__WEBPACK_IMPORTED_MODULE_1__","VCarousel","VCarouselItem","_mixins_selectable__WEBPACK_IMPORTED_MODULE_2__","indeterminateIcon","onIcon","offIcon","inputIndeterminate","genCheckbox","genRipple","genLabel","_VCheckbox__WEBPACK_IMPORTED_MODULE_0__","_VIcon__WEBPACK_IMPORTED_MODULE_2__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_5__","genClose","tabindex","_VChip__WEBPACK_IMPORTED_MODULE_0__","_VAutocomplete_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__","delimiters","returnObject","editingIndex","counterValue","updateTags","genChipSelection","chip","dblclick","onChipInput","getMenuIndex","updateEditing","updateCombobox","isUsingSlot","hasChips","menuIndex","_VCombobox__WEBPACK_IMPORTED_MODULE_0__","_util_mixins__WEBPACK_IMPORTED_MODULE_2__","isGreater","_VCounter__WEBPACK_IMPORTED_MODULE_0__","_mixins_data_iterable__WEBPACK_IMPORTED_MODULE_1__","contentTag","contentProps","selectAll","initPagination","genEmptyItems","genFilteredItems","createProps","genFooter","footer","hideActions","genActions","genHeader","header","_VDataIterator__WEBPACK_IMPORTED_MODULE_0__","_mixins_data_iterable__WEBPACK_IMPORTED_MODULE_2__","_mixins_head__WEBPACK_IMPORTED_MODULE_3__","_mixins_body__WEBPACK_IMPORTED_MODULE_4__","_mixins_foot__WEBPACK_IMPORTED_MODULE_5__","_mixins_progress__WEBPACK_IMPORTED_MODULE_6__","_util_helpers__WEBPACK_IMPORTED_MODULE_7__","VTableOverflow","headersLength","headerText","headerKey","hideHeaders","rowsPerPageText","customFilter","actionsClasses","actionsRangeControlsClasses","actionsSelectClasses","actionsPaginationClasses","filteredItemsImpl","headerColumns","firstSortable","sortable","defaultPagination","disableInitialSort","hasTag","genTR","tableOverflow","genTHead","genTBody","genTFoot","genActionsFooter","_mixins_returnable__WEBPACK_IMPORTED_MODULE_1__","_VBtn__WEBPACK_IMPORTED_MODULE_4__","_VMenu__WEBPACK_IMPORTED_MODULE_5__","cancelText","saveText","genButton","save","returnValue","keydown","esc","closeOnClick","closeOnContentClick","_VDataTable__WEBPACK_IMPORTED_MODULE_1__","_VEditDialog__WEBPACK_IMPORTED_MODULE_2__","VDataTable","VEditDialog","_transitions_expand_transition__WEBPACK_IMPORTED_MODULE_0__","_util_helpers__WEBPACK_IMPORTED_MODULE_1__","genExpandedRow","isExpanded","itemKey","colspan","isSelected","expandRow","_util_console__WEBPACK_IMPORTED_MODULE_0__","_VCheckbox__WEBPACK_IMPORTED_MODULE_1__","sortIcon","everyItem","genTProgress","hideDetails","inputValue","hasSelectAll","headerCell","genHeaderData","genHeaderSortingData","computedPagination","beingSorted","genProgress","_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_0__","_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_1__","_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_2__","_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_3__","_VDatePickerYears__WEBPACK_IMPORTED_MODULE_4__","_mixins_picker__WEBPACK_IMPORTED_MODULE_5__","_util__WEBPACK_IMPORTED_MODULE_6__","_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_7__","_util_console__WEBPACK_IMPORTED_MODULE_8__","_VCalendar_util_timestamp__WEBPACK_IMPORTED_MODULE_9__","_util_mixins__WEBPACK_IMPORTED_MODULE_10__","sanitizeDateString","dateString","allowedDates","eventColor","firstDayOfWeek","headerDateFormat","pickerDate","reactive","readonly","scrollable","showCurrent","showWeek","titleDateFormat","yearFormat","yearIcon","activePicker","inputDay","inputMonth","inputYear","isReversing","tableDate","lastValue","selectedMonths","inputDate","tableMonth","tableYear","minMonth","maxMonth","minYear","maxYear","formatters","titleDate","defaultTitleMultipleDateFormatter","defaultTitleDateFormatter","dates","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","digit","landscape","sanitizeType","checkMultipleProp","setInputDate","_type","isDateAllowed","emitInput","newInput","yearClick","monthClick","dateClick","genPickerTitle","selectingYear","genTableHeader","genDateTable","genMonthTable","genYears","genPickerBody","genPicker","_mixins_date_picker_table__WEBPACK_IMPORTED_MODULE_0__","calculateTableDate","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","displayedYear","displayedMonth","weekDay","getUTCDay","getWeekNumber","dayOfYear","genWeekNumber","weekNumber","genTable","_VBtn__WEBPACK_IMPORTED_MODULE_1__","_util__WEBPACK_IMPORTED_MODULE_5__","_util_mixins__WEBPACK_IMPORTED_MODULE_6__","genBtn","calculateChange","cols","tds","_mixins_picker_button__WEBPACK_IMPORTED_MODULE_2__","computedTransition","genYearIcon","getYearBtn","genPickerButton","genTitleText","genTitleDate","activeItem","getElementsByClassName","genYearItem","formatted","genYearItems","selectedYear","_VDatePicker__WEBPACK_IMPORTED_MODULE_0__","_VDatePickerTitle__WEBPACK_IMPORTED_MODULE_1__","_VDatePickerHeader__WEBPACK_IMPORTED_MODULE_2__","_VDatePickerDateTable__WEBPACK_IMPORTED_MODULE_3__","_VDatePickerMonthTable__WEBPACK_IMPORTED_MODULE_4__","_VDatePickerYears__WEBPACK_IMPORTED_MODULE_5__","VDatePicker","VDatePickerTitle","VDatePickerHeader","VDatePickerDateTable","VDatePickerMonthTable","VDatePickerYears","_directives_touch__WEBPACK_IMPORTED_MODULE_1__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_3__","_util_isDateAllowed__WEBPACK_IMPORTED_MODULE_4__","Touch","genButtonClasses","isAllowed","isFloating","isCurrent","genButtonEvents","mouseEventType","genEvents","getEventColors","arrayize","eventColors","wheel","deltaY","touch","touchDirective","_pad__WEBPACK_IMPORTED_MODULE_0__","substrOptions","makeIsoString","intlFormatter_1","_createNativeLocaleFormatter__WEBPACK_IMPORTED_MODULE_0__","_monthChange__WEBPACK_IMPORTED_MODULE_1__","_pad__WEBPACK_IMPORTED_MODULE_2__","allowedFn","targetLength","padString","_mixins_dependent__WEBPACK_IMPORTED_MODULE_1__","_mixins_detachable__WEBPACK_IMPORTED_MODULE_2__","_mixins_overlayable__WEBPACK_IMPORTED_MODULE_3__","_mixins_returnable__WEBPACK_IMPORTED_MODULE_4__","_mixins_stackable__WEBPACK_IMPORTED_MODULE_5__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_6__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_7__","_util_helpers__WEBPACK_IMPORTED_MODULE_8__","_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_9__","_util_console__WEBPACK_IMPORTED_MODULE_10__","ClickOutside","fullscreen","stackClass","stackMinZIndex","contentClasses","hasActivator","hideScroll","removeOverlay","showScroll","genOverlay","isBooted","animateClick","closeConditional","activeZIndex","getMaxZIndex","onKeydown","getOpenDependents","activator_1","getActivator","activatedBy","activatorNode","genActivator","getOpenDependentElements","dialog","showLazyContent","getScopeIdAttrs","_VDialog__WEBPACK_IMPORTED_MODULE_0__","vertical","_VDivider__WEBPACK_IMPORTED_MODULE_0__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_2__","expansionPanel","popout","openIndex","openCount","updateFromValue","updatePanels","panelClick","_transitions__WEBPACK_IMPORTED_MODULE_0__","_mixins_bootable__WEBPACK_IMPORTED_MODULE_1__","_mixins_rippleable__WEBPACK_IMPORTED_MODULE_3__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_4__","_VIcon__WEBPACK_IMPORTED_MODULE_5__","_util_console__WEBPACK_IMPORTED_MODULE_7__","expandIcon","containerClasses","isReadonly","onHeaderClick","_VExpansionPanel__WEBPACK_IMPORTED_MODULE_0__","_VExpansionPanelContent__WEBPACK_IMPORTED_MODULE_1__","VExpansionPanel","VExpansionPanelContent","applicationProperty","computedMarginBottom","application","computedPaddingLeft","computedPaddingRight","paddingRight","_VFooter__WEBPACK_IMPORTED_MODULE_0__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_1__","lazyValidation","inputs","errorBag","watchInput","shouldValidate","resetValidation","unwatch","novalidate","submit","_VForm__WEBPACK_IMPORTED_MODULE_0__","_grid__WEBPACK_IMPORTED_MODULE_1__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_1__","insetFooter","paddingTop","VSpacer","_VContainer__WEBPACK_IMPORTED_MODULE_1__","_VContent__WEBPACK_IMPORTED_MODULE_2__","_VFlex__WEBPACK_IMPORTED_MODULE_3__","_VLayout__WEBPACK_IMPORTED_MODULE_4__","VContainer","VContent","VFlex","VLayout","_mixins_delayable__WEBPACK_IMPORTED_MODULE_0__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_1__","onMouseEnter","runDelay","onMouseLeave","mouseenter","mouseleave","_VHover__WEBPACK_IMPORTED_MODULE_0__","SIZE_MAP","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_2__","_util_helpers__WEBPACK_IMPORTED_MODULE_4__","vue__WEBPACK_IMPORTED_MODULE_5__","vue__WEBPACK_IMPORTED_MODULE_5___default","isFontAwesome5","iconType","VIcon","getIcon","iconName","sizes","medium","xLarge","explicitSize","getDefaultData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","$_wrapperFor","_VIcon__WEBPACK_IMPORTED_MODULE_0__","_VResponsive__WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_2__","alt","lazySrc","srcset","currentSrc","isLoading","calculatedAspectRatio","computedAspectRatio","normalisedSrc","aspectRatio","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","pollForSize","onLoad","getSrc","naturalHeight","naturalWidth","__genPlaceholder","__cachedSizer","_VImg__WEBPACK_IMPORTED_MODULE_0__","_VLabel__WEBPACK_IMPORTED_MODULE_2__","_VMessages__WEBPACK_IMPORTED_MODULE_3__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_4__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_5__","_mixins_validatable__WEBPACK_IMPORTED_MODULE_6__","_util_mixins__WEBPACK_IMPORTED_MODULE_9__","appendIcon","appendIconCb","hint","persistentHint","prependIcon","prependIconCb","hasMouseDown","classesInput","hasState","isLabelActive","directivesInput","hasHint","hasMessages","hasLabel","$_modelEvent","genPrependSlot","genControl","genAppendSlot","genInputSlot","genMessages","shouldDeprecate","validationState","onMouseUp","for","validations","genSlot","prepend","_VInput__WEBPACK_IMPORTED_MODULE_0__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_0__","BaseItemGroup","_mixins_proxyable__WEBPACK_IMPORTED_MODULE_1__","_util_console__WEBPACK_IMPORTED_MODULE_4__","internalLazyValue","toggleMethod","updateItemsState","updateInternalValue","updateMandatory","updateItem","valueIndex","updateMultiple","updateSingle","isSame","itemGroup","_VItem__WEBPACK_IMPORTED_MODULE_0__","_VItemGroup__WEBPACK_IMPORTED_MODULE_1__","VItem","VItemGroup","backgroundStyles","genBackground","genImage","genWrapper","_VJumbotron__WEBPACK_IMPORTED_MODULE_0__","_VLabel__WEBPACK_IMPORTED_MODULE_0__","__values","listClick","dense","subheader","threeLine","twoLine","e_1","e_1_1","return","_mixins_registrable__WEBPACK_IMPORTED_MODULE_3__","_transitions__WEBPACK_IMPORTED_MODULE_4__","noAction","subGroup","groupClasses","headerClasses","itemsClasses","genAppendIcon","genGroup","genPrependIcon","_mixins_colorable__WEBPACK_IMPORTED_MODULE_0__","_mixins_routable__WEBPACK_IMPORTED_MODULE_1__","_directives_ripple__WEBPACK_IMPORTED_MODULE_4__","Ripple","avatar","proxyClass","listClasses","isLink","hasClick","isRouteLink","filteredChild","vue__WEBPACK_IMPORTED_MODULE_1__","vue__WEBPACK_IMPORTED_MODULE_1___default","VListTileActionText","VListTileContent","VListTileTitle","VListTileSubTitle","_VList__WEBPACK_IMPORTED_MODULE_1__","_VListGroup__WEBPACK_IMPORTED_MODULE_2__","_VListTile__WEBPACK_IMPORTED_MODULE_3__","_VListTileAction__WEBPACK_IMPORTED_MODULE_4__","_VListTileAvatar__WEBPACK_IMPORTED_MODULE_5__","VList","VListGroup","VListTile","VListTileAction","VListTileAvatar","_mixins_delayable__WEBPACK_IMPORTED_MODULE_2__","_mixins_dependent__WEBPACK_IMPORTED_MODULE_3__","_mixins_detachable__WEBPACK_IMPORTED_MODULE_4__","_mixins_menuable_js__WEBPACK_IMPORTED_MODULE_5__","_mixins_returnable__WEBPACK_IMPORTED_MODULE_6__","_mixins_toggleable__WEBPACK_IMPORTED_MODULE_7__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_8__","_mixins_menu_activator__WEBPACK_IMPORTED_MODULE_9__","_mixins_menu_generators__WEBPACK_IMPORTED_MODULE_10__","_mixins_menu_keyable__WEBPACK_IMPORTED_MODULE_11__","_mixins_menu_position__WEBPACK_IMPORTED_MODULE_12__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_13__","_directives_resize__WEBPACK_IMPORTED_MODULE_14__","_util_helpers__WEBPACK_IMPORTED_MODULE_15__","_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_16__","_util_console__WEBPACK_IMPORTED_MODULE_17__","openOnClick","openOnHover","defaultOffset","hasJustFocused","resizeTimeout","calculatedLeft","menuWidth","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","nudgeWidth","pageWidth","calculatedTop","isAttached","calcTop","calcYOverflow","calculatedTopAuto","transformOrigin","newActivator","oldActivator","removeActivatorEvents","addActivatorEvents","_disabled","isContentActive","getTiles","startTransition","calcTopAuto","calcScrollPosition","disableKeys","genTransition","_VMenu__WEBPACK_IMPORTED_MODULE_0__","activatorClickHandler","absoluteX","clientX","absoluteY","mouseEnterHandler","mouseLeaveHandler","relatedTarget","callDeactivate","genDirectives","rootThemeClasses","activatorFixed","listIndex","tiles","tab","changeListIndex","down","up","activeTile","maxScrollTop","computedTop","tileDistanceFromMenuTop","firstTileOffsetTop","genMessage","escapedHTML","_VMessages__WEBPACK_IMPORTED_MODULE_0__","_mixins_dependent__WEBPACK_IMPORTED_MODULE_2__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_4__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_6__","_directives_resize__WEBPACK_IMPORTED_MODULE_7__","_directives_touch__WEBPACK_IMPORTED_MODULE_8__","clipped","disableRouteWatcher","disableResizeWatcher","miniVariant","miniVariantWidth","mobileBreakPoint","permanent","stateless","temporary","touchArea","calculatedTransform","calculatedWidth","isMobile","hasApp","breakpoint","reactsToClick","reactsToMobile","reactsToRoute","resizeIsDisabled","showOverlay","callUpdate","calculateTouchArea","_this_1","swipeLeft","swipeRight","touchendX","touchstartX","transitionend","resizeEvent","initUIEvent","_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_0__","_VAutocomplete__WEBPACK_IMPORTED_MODULE_2__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_3__","_util_console__WEBPACK_IMPORTED_MODULE_5__","segmented","isSingle","genCommaSelection","genSegmentedBtn","itemValue","itemObj","_VOverflowBtn__WEBPACK_IMPORTED_MODULE_0__","_directives_resize__WEBPACK_IMPORTED_MODULE_2__","totalVisible","maxButtons","even","innerWidth","genItem","_VPagination__WEBPACK_IMPORTED_MODULE_0__","_mixins_translatable__WEBPACK_IMPORTED_MODULE_1__","parallax","complete","objHeight","imgData","_VParallax__WEBPACK_IMPORTED_MODULE_0__","computedTitleColor","defaultTitleColor","genTitle","genBodyTransition","_VPicker__WEBPACK_IMPORTED_MODULE_0__","calculatedSize","circumference","radius","strokeDashArray","strokeDashOffset","strokeWidth","viewBoxSize","svgStyles","genCircle","genSvg","xmlns","viewBox","_VProgressCircular__WEBPACK_IMPORTED_MODULE_0__","backgroundOpacity","bufferValue","backgroundStyle","normalizedBufer","effectiveWidth","genDeterminate","genBar","genIndeterminate","fade","slide","_VProgressLinear__WEBPACK_IMPORTED_MODULE_0__","_mixins_rippleable__WEBPACK_IMPORTED_MODULE_4__","_mixins_selectable__WEBPACK_IMPORTED_MODULE_6__","_mixins_registrable__WEBPACK_IMPORTED_MODULE_7__","parentError","computedData","radio","genRadio","_VInput__WEBPACK_IMPORTED_MODULE_2__","_mixins_comparable__WEBPACK_IMPORTED_MODULE_3__","internalTabIndex","radios","hasError","setErrorState","setActiveRadio","onRadioChange","hasInput","onRadioBlur","_VRadioGroup__WEBPACK_IMPORTED_MODULE_0__","_VRadio__WEBPACK_IMPORTED_MODULE_1__","VRadioGroup","VRadio","_VSlider__WEBPACK_IMPORTED_MODULE_1__","activeThumb","roundValue","inputWidth","alwaysDirty","trackFillStyles","fillPercent","trackPadding","getIndexOfClosestValue","genTrackContainer","genSteps","onThumbMouseDown","valueWidth","genThumbContainer","onSliderClick","onMouseMove","trackClick","parseMouseMove","isInsideTrack","parseKeyDown","_VRangeSlider__WEBPACK_IMPORTED_MODULE_0__","_mixins_delayable__WEBPACK_IMPORTED_MODULE_3__","_mixins_sizeable__WEBPACK_IMPORTED_MODULE_4__","_mixins_rippleable__WEBPACK_IMPORTED_MODULE_5__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_6__","_util_mixins__WEBPACK_IMPORTED_MODULE_8__","emptyIcon","fullIcon","halfIcon","halfIncrements","hoverIndex","iconProps","isHovering","createClickFn","genHoverIndex","isFilled","isHovered","isHalfHovered","isHalfFilled","isHalfEvent","getIconName","isHalf","getColor","_VRating__WEBPACK_IMPORTED_MODULE_0__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_1__","aspectStyle","measurableStyles","_VResponsive__WEBPACK_IMPORTED_MODULE_0__","_VChip__WEBPACK_IMPORTED_MODULE_2__","_VMenu__WEBPACK_IMPORTED_MODULE_3__","_VSelectList__WEBPACK_IMPORTED_MODULE_4__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_5__","_mixins_comparable__WEBPACK_IMPORTED_MODULE_6__","_mixins_filterable__WEBPACK_IMPORTED_MODULE_7__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_8__","cacheItems","chips","deletableChips","itemAvatar","itemDisabled","openOnClear","smallChips","cachedItems","keyboardLookupPrefix","keyboardLookupLastTime","filterDuplicates","dynamicHeight","isHidingSelected","noDataText","staticList","normalisedProps","nudgeBottom","initialValue","onScroll","uniqueValues","findExistingIndex","selections","genAffix","genClearIcon","genIconSlot","genMenu","keypress","onKeyPress","genList","genListWithSlot","slotName","inheritedProps","deprecatedProps","deprecatedProps_1","deprecatedProps_1_1","replacement_1","props_1","onlyBools","propType","genSelection","genSlotSelection","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","appendInner","isEnclosed","showMoreItems","listTile","e_2","values_1","values_1_1","e_2_1","_VDivider__WEBPACK_IMPORTED_MODULE_2__","_VSubheader__WEBPACK_IMPORTED_MODULE_3__","_VList__WEBPACK_IMPORTED_MODULE_4__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_5__","parsedItems","tileActiveClass","staticNoDataTile","genTileContent","genAction","genFilteredText","getMaskedCharacters","genHighlight","genTile","getAvatar","needsTile","_VSelect__WEBPACK_IMPORTED_MODULE_0__","_VOverflowBtn__WEBPACK_IMPORTED_MODULE_1__","_VCombobox__WEBPACK_IMPORTED_MODULE_3__","_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_4__","_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_5__","combobox","_mixins_elevatable__WEBPACK_IMPORTED_MODULE_2__","_mixins_measurable__WEBPACK_IMPORTED_MODULE_3__","elevationClasses","_VSheet__WEBPACK_IMPORTED_MODULE_0__","_transitions__WEBPACK_IMPORTED_MODULE_1__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_3__","_mixins_loadable__WEBPACK_IMPORTED_MODULE_6__","inverseLabel","tickLabels","tickSize","thumbColor","thumbLabel","thumbSize","trackColor","keyPressed","showTicks","stepNumeric","showThumbLabel","computedTrackColor","computedThumbColor","trackTransition","trackStyles","tickStyles","numTicks","slider","genSlider","genListeners","keyup","onKeyUp","genThumb","thumbLabelContent","genThumbLabel","touchstart","onSliderMouseUp","track","trackWidth","pageup","pagedown","home","steps","increase","trimmedStep","decimals","_VSlider__WEBPACK_IMPORTED_MODULE_0__","autoHeight","activeTimeout","_VSnackbar__WEBPACK_IMPORTED_MODULE_0__","_helpers_core__WEBPACK_IMPORTED_MODULE_2__","_helpers_path__WEBPACK_IMPORTED_MODULE_3__","autoDraw","autoDrawDuration","autoDrawEasing","autoLineWidth","gradientDirection","showLabels","labelSize","lastLength","parsedPadding","parsedWidth","totalBars","_lineWidth","totalPadding","boundary","minX","minY","maxX","maxY","hasLabels","parsedLabels","textY","getTotalLength","strokeDasharray","strokeDashoffset","genGradient","genG","textAnchor","dominantBaseline","genLabels","genText","genPath","totalWidth","genClipPath","genBarLabels","rounding","rx","ry","dur","genTrend","genPoints","normalisedPoints","totalPoints","maxValue","minValue","gridX","gridY","checkCollinear","p0","getDistance","unitVector","_math__WEBPACK_IMPORTED_MODULE_0__","isCollinear","isTooCloseForRadius","radiusForPoint","_VSparkline__WEBPACK_IMPORTED_MODULE_0__","_mixins_positionable__WEBPACK_IMPORTED_MODULE_2__","_mixins_transitionable__WEBPACK_IMPORTED_MODULE_3__","_directives_click_outside__WEBPACK_IMPORTED_MODULE_4__","btnCount_1","transitionDelay","_VSpeedDial__WEBPACK_IMPORTED_MODULE_0__","stepClick","isVertical","nonLinear","altLabels","isReverse","isVerticalProvided","wrapperClasses","onTransition","stepper","contentData","wrapperData","_directives_ripple__WEBPACK_IMPORTED_MODULE_3__","completeIcon","editIcon","errorIcon","isInactive","stepContent","VStepperHeader","VStepperItems","_VStepper__WEBPACK_IMPORTED_MODULE_1__","_VStepperStep__WEBPACK_IMPORTED_MODULE_2__","_VStepperContent__WEBPACK_IMPORTED_MODULE_3__","VStepper","VStepperContent","VStepperStep","_VSubheader__WEBPACK_IMPORTED_MODULE_0__","_directives_touch__WEBPACK_IMPORTED_MODULE_3__","_VProgressCircular_VProgressCircular__WEBPACK_IMPORTED_MODULE_5__","_util_helpers__WEBPACK_IMPORTED_MODULE_6__","switchData","genSwitch","onSwipeLeft","onSwipeRight","_VSwitch__WEBPACK_IMPORTED_MODULE_0__","lightsOut","_VSystemBar__WEBPACK_IMPORTED_MODULE_0__","_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_1__","_mixins_tabs_computed__WEBPACK_IMPORTED_MODULE_2__","_mixins_tabs_generators__WEBPACK_IMPORTED_MODULE_3__","_mixins_tabs_props__WEBPACK_IMPORTED_MODULE_4__","_mixins_tabs_touch__WEBPACK_IMPORTED_MODULE_5__","_mixins_tabs_watchers__WEBPACK_IMPORTED_MODULE_6__","_mixins_colorable__WEBPACK_IMPORTED_MODULE_7__","_mixins_ssr_bootable__WEBPACK_IMPORTED_MODULE_8__","_mixins_themeable__WEBPACK_IMPORTED_MODULE_9__","_directives_resize__WEBPACK_IMPORTED_MODULE_10__","_directives_touch__WEBPACK_IMPORTED_MODULE_11__","_util_console__WEBPACK_IMPORTED_MODULE_12__","_util_ThemeProvider__WEBPACK_IMPORTED_MODULE_13__","tabGroup","tabProxy","registerItems","unregisterItems","isOverflowing","nextIconVisible","prevIconVisible","scrollOffset","sliderWidth","sliderLeft","startX","tabItems","transitionTime","widths","tabs","checkIcons","checkPrevIcon","checkNextIcon","callSlider","hideSlider","activeTab","setWidths","updateTabsView","overflowCheck","newOffset","setOverflow","parseNodes","scrollIntoView","itemOffset","additionalOffset","_VWindow_VWindow__WEBPACK_IMPORTED_MODULE_0__","changeModel","internalIndex","_VTabs__WEBPACK_IMPORTED_MODULE_0__","_VTab__WEBPACK_IMPORTED_MODULE_1__","_VTabsItems__WEBPACK_IMPORTED_MODULE_2__","_VTabItem__WEBPACK_IMPORTED_MODULE_3__","_VTabsSlider__WEBPACK_IMPORTED_MODULE_4__","VTabs","VTab","VTabsItems","VTabItem","VTabsSlider","containerStyles","hasArrows","showArrows","sliderStyles","_VTabsItems__WEBPACK_IMPORTED_MODULE_0__","_VTabsSlider__WEBPACK_IMPORTED_MODULE_1__","alignWithTitle","centered","fixedTabs","grow","iconsAndText","onTouchStart","onTouchMove","onTouchEnd","sliderColor","willChange","touchmoveX","maxScrollOffset","_VInput__WEBPACK_IMPORTED_MODULE_1__","_VCounter__WEBPACK_IMPORTED_MODULE_2__","_VLabel__WEBPACK_IMPORTED_MODULE_3__","_mixins_maskable__WEBPACK_IMPORTED_MODULE_4__","_mixins_loadable__WEBPACK_IMPORTED_MODULE_5__","_directives_ripple__WEBPACK_IMPORTED_MODULE_6__","dirtyTypes","appendOuterIcon","appendOuterIconCb","autofocus","clearIcon","clearIconCb","prependInnerIcon","prependInnerIconCb","singleLine","solo","soloInverted","internalChange","isClearing","isSolo","hasOutline","unmaskText","maskText","labelPosition","labelValue","prefixWidth","showLabel","prefixLabel","hasColor","masked_1","genPrependInnerSlot","genCounter","maxlength","genTextFieldSlot","masked","_VTextField__WEBPACK_IMPORTED_MODULE_0__","_VTextarea_VTextarea__WEBPACK_IMPORTED_MODULE_1__","_util_rebuildFunctionalSlots__WEBPACK_IMPORTED_MODULE_2__","_util_dedupeModelListeners__WEBPACK_IMPORTED_MODULE_3__","_VTextField_VTextField__WEBPACK_IMPORTED_MODULE_1__","autoGrow","noResize","rowHeight","noResizeHandle","inputHeight","calculateInputHeight","minHeight","_VTextarea__WEBPACK_IMPORTED_MODULE_0__","selectingTimes","_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_0__","_VTimePickerClock__WEBPACK_IMPORTED_MODULE_1__","_mixins_picker__WEBPACK_IMPORTED_MODULE_2__","_VDatePicker_util_pad__WEBPACK_IMPORTED_MODULE_4__","rangeHours24","rangeHours12am","rangeHours12pm","range60","selectingNames","allowedHours","allowedMinutes","allowedSeconds","useSeconds","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","period","selecting","selectingHour","selectingMinute","selectingSecond","isAllowedHourCb","minHour","maxHour","isAllowedMinuteCb","isHourAllowed","minMinute","maxMinute","minTime","maxTime","isAllowedSecondCb","isMinuteAllowed","minSecond","maxSecond","isAmPm","setInputData","genValue","emitValue","setPeriod","newHour","firstAllowed","convert12to24","convert24to12","emitChange","genClock","allowedValues","double","ampm","isDragging","valueOnMouseDown","valueOnMouseUp","degreesPerUnit","roundCount","degrees","displayedValue","innerRadiusScale","isInner","handScale","genValues","genHand","getPosition","onDragMove","clock","innerClock","coords","handAngle","insideClick","euclidean","atan2","touchend","touchmove","_mixins_picker_button__WEBPACK_IMPORTED_MODULE_1__","_VDatePicker_util__WEBPACK_IMPORTED_MODULE_2__","_VTimePicker__WEBPACK_IMPORTED_MODULE_4__","genTime","displayedHour","displayedMinute","titleContent","displayedSecond","genAmPm","_VTimePicker__WEBPACK_IMPORTED_MODULE_0__","_VTimePickerTitle__WEBPACK_IMPORTED_MODULE_2__","VTimePicker","VTimePickerClock","VTimePickerTitle","alignTop","fillDot","hideDot","iconColor","hasIcon","genInnerDot","genDot","genOpposite","opposite","_VTimeline__WEBPACK_IMPORTED_MODULE_0__","_VTimelineItem__WEBPACK_IMPORTED_MODULE_1__","VTimeline","VTimelineItem","_directives_scroll__WEBPACK_IMPORTED_MODULE_5__","_util_mixins__WEBPACK_IMPORTED_MODULE_7__","Scroll","card","clippedLeft","clippedRight","extended","extensionHeight","invertedScroll","manualScroll","prominent","scrollOffScreen","scrollToolbarOffScreen","scrollTarget","scrollThreshold","currentScroll","heights","mobileLandscape","mobile","desktop","isExtended","isScrollingUp","previousScroll","savedScroll","canScroll","computedContentHeight","mdAndUp","smAndDown","computedExtensionHeight","computedMarginTop","computedTransform","currentThreshold","extension","vue__WEBPACK_IMPORTED_MODULE_2__","vue__WEBPACK_IMPORTED_MODULE_2___default","defaultSlot","VToolbarTitle","VToolbarItems","_VToolbar__WEBPACK_IMPORTED_MODULE_1__","_VToolbarSideIcon__WEBPACK_IMPORTED_MODULE_2__","VToolbar","VToolbarSideIcon","_mixins_menuable__WEBPACK_IMPORTED_MODULE_5__","closeDelay","openDelay","closeDependents","unknown","activatorLeft","nudgeLeft","nudgeRight","activatorTop","nudgeTop","callActivate","_VTooltip__WEBPACK_IMPORTED_MODULE_0__","_VTreeviewNode__WEBPACK_IMPORTED_MODULE_1__","_util_filterTreeItems__WEBPACK_IMPORTED_MODULE_7__","treeview","hoverable","multipleActive","openAll","selectedCache","activeCache","openCache","excludedItems","excluded","itemChildren","oldKeys","newKeys","getKeys","oldSelectedCache","buildTree","emitSelected","handleNodeCacheWatcher","updateActive","emitActive","updateSelected","updateOpen","emitOpen","updateAll","oldNode","isIndeterminate","isOpen","calculateState","updateVnodeState","counts","emitNodeCache","updateFn","emitFn","getDescendants","descendants","getParents","changed","descendant","key_1","hasLoaded","checkChildren","isExcluded","genChild","VTreeviewNodeProps","_VTreeviewNode__WEBPACK_IMPORTED_MODULE_2__","activatable","selectable","selectedColor","loadingIcon","loadChildren","scopedProps","leaf","hasChildren","genToggle","genNode","genChildrenWrapper","_VTreeview__WEBPACK_IMPORTED_MODULE_0__","VTreeview","VTreeviewNode","filterTreeItem","filterTreeItems","textKey","idKey","childrenKey","_directives_touch__WEBPACK_IMPORTED_MODULE_2__","internalReverse","nextIndex","_mixins_bootable__WEBPACK_IMPORTED_MODULE_0__","_mixins_groupable__WEBPACK_IMPORTED_MODULE_1__","reverseTransition","wasCancelled","onTransitionEnd","div","_VWindow__WEBPACK_IMPORTED_MODULE_0__","_VWindowItem__WEBPACK_IMPORTED_MODULE_1__","VWindow","VWindowItem","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","goTo","_easing_patterns__WEBPACK_IMPORTED_MODULE_0__","scrollingElement","easing","appOffset","isDrawer","isClipped","targetLocation","startLocation","ease","currentTime","timeElapsed","getOffset","totalOffset","offsetParent","getContainer","checkVueVersion","_mixins_application__WEBPACK_IMPORTED_MODULE_1__","_mixins_breakpoint__WEBPACK_IMPORTED_MODULE_2__","_mixins_theme__WEBPACK_IMPORTED_MODULE_3__","_mixins_icons__WEBPACK_IMPORTED_MODULE_4__","_mixins_options__WEBPACK_IMPORTED_MODULE_5__","_mixins_lang__WEBPACK_IMPORTED_MODULE_6__","_goTo__WEBPACK_IMPORTED_MODULE_7__","Vuetify","iconfont","registerComponents","requiredVue","vueDep","passes","BREAKPOINTS_DEFAULTS","thresholds","xs","sm","md","scrollbarWidth","getClientHeight","getClientWidth","xsOnly","smOnly","smAndUp","mdOnly","mdAndDown","lgOnly","lgAndDown","lgAndUp","xlOnly","setDimensions","convertToComponentDeclarations","ICONS_MATERIAL","ICONS_MDI","ICONS_FONTAWESOME4","ICONS_FONTAWESOME","iconSet","iconSets","mdi","fa","fa4","faSvg","_locale_en__WEBPACK_IMPORTED_MODULE_0__","LANG_PREFIX","getTranslation","usingFallback","shortKey","translation","locales","OPTIONS_DEFAULTS","THEME_DEFAULTS","primary","secondary","accent","success","warning","_VAlert__WEBPACK_IMPORTED_MODULE_1__","_VAvatar__WEBPACK_IMPORTED_MODULE_3__","_VBadge__WEBPACK_IMPORTED_MODULE_4__","_VBottomNav__WEBPACK_IMPORTED_MODULE_5__","_VBottomSheet__WEBPACK_IMPORTED_MODULE_6__","_VBreadcrumbs__WEBPACK_IMPORTED_MODULE_7__","_VBtn__WEBPACK_IMPORTED_MODULE_8__","_VBtnToggle__WEBPACK_IMPORTED_MODULE_9__","_VCalendar__WEBPACK_IMPORTED_MODULE_10__","_VCard__WEBPACK_IMPORTED_MODULE_11__","_VCarousel__WEBPACK_IMPORTED_MODULE_12__","_VCheckbox__WEBPACK_IMPORTED_MODULE_13__","_VChip__WEBPACK_IMPORTED_MODULE_14__","_VCombobox__WEBPACK_IMPORTED_MODULE_15__","_VCounter__WEBPACK_IMPORTED_MODULE_16__","_VDataIterator__WEBPACK_IMPORTED_MODULE_17__","_VDataTable__WEBPACK_IMPORTED_MODULE_18__","_VDatePicker__WEBPACK_IMPORTED_MODULE_19__","_VDialog__WEBPACK_IMPORTED_MODULE_20__","_VDivider__WEBPACK_IMPORTED_MODULE_21__","_VExpansionPanel__WEBPACK_IMPORTED_MODULE_22__","_VFooter__WEBPACK_IMPORTED_MODULE_23__","_VForm__WEBPACK_IMPORTED_MODULE_24__","_VGrid__WEBPACK_IMPORTED_MODULE_25__","_VHover__WEBPACK_IMPORTED_MODULE_26__","_VIcon__WEBPACK_IMPORTED_MODULE_27__","_VImg__WEBPACK_IMPORTED_MODULE_28__","_VInput__WEBPACK_IMPORTED_MODULE_29__","_VItemGroup__WEBPACK_IMPORTED_MODULE_30__","_VJumbotron__WEBPACK_IMPORTED_MODULE_31__","_VLabel__WEBPACK_IMPORTED_MODULE_32__","_VList__WEBPACK_IMPORTED_MODULE_33__","_VMenu__WEBPACK_IMPORTED_MODULE_34__","_VMessages__WEBPACK_IMPORTED_MODULE_35__","_VNavigationDrawer__WEBPACK_IMPORTED_MODULE_36__","_VOverflowBtn__WEBPACK_IMPORTED_MODULE_37__","_VPagination__WEBPACK_IMPORTED_MODULE_38__","_VSheet__WEBPACK_IMPORTED_MODULE_39__","_VParallax__WEBPACK_IMPORTED_MODULE_40__","_VPicker__WEBPACK_IMPORTED_MODULE_41__","_VProgressCircular__WEBPACK_IMPORTED_MODULE_42__","_VProgressLinear__WEBPACK_IMPORTED_MODULE_43__","_VRadioGroup__WEBPACK_IMPORTED_MODULE_44__","_VRangeSlider__WEBPACK_IMPORTED_MODULE_45__","_VRating__WEBPACK_IMPORTED_MODULE_46__","_VResponsive__WEBPACK_IMPORTED_MODULE_47__","_VSelect__WEBPACK_IMPORTED_MODULE_48__","_VSlider__WEBPACK_IMPORTED_MODULE_49__","_VSnackbar__WEBPACK_IMPORTED_MODULE_50__","_VSparkline__WEBPACK_IMPORTED_MODULE_51__","_VSpeedDial__WEBPACK_IMPORTED_MODULE_52__","_VStepper__WEBPACK_IMPORTED_MODULE_53__","_VSubheader__WEBPACK_IMPORTED_MODULE_54__","_VSwitch__WEBPACK_IMPORTED_MODULE_55__","_VSystemBar__WEBPACK_IMPORTED_MODULE_56__","_VTabs__WEBPACK_IMPORTED_MODULE_57__","_VTextarea__WEBPACK_IMPORTED_MODULE_58__","_VTextField__WEBPACK_IMPORTED_MODULE_59__","_VTimeline__WEBPACK_IMPORTED_MODULE_60__","_VTimePicker__WEBPACK_IMPORTED_MODULE_61__","_VToolbar__WEBPACK_IMPORTED_MODULE_62__","_VTooltip__WEBPACK_IMPORTED_MODULE_63__","_VTreeview__WEBPACK_IMPORTED_MODULE_64__","_VWindow__WEBPACK_IMPORTED_MODULE_65__","_transitions__WEBPACK_IMPORTED_MODULE_66__","expandedParentClass","sizeProperty","_parent","_initialStyle","initialStyle","resetStyles","VBottomSheetTransition","VCarouselTransition","VCarouselReverseTransition","VTabTransition","VTabReverseTransition","VMenuTransition","VFabTransition","VDialogTransition","VDialogBottomTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","VRowExpandTransition","_expand_transition__WEBPACK_IMPORTED_MODULE_1__","isTrusted","pointerType","_clickOutside","_click_outside__WEBPACK_IMPORTED_MODULE_0__","_resize__WEBPACK_IMPORTED_MODULE_1__","_ripple__WEBPACK_IMPORTED_MODULE_2__","_scroll__WEBPACK_IMPORTED_MODULE_3__","_touch__WEBPACK_IMPORTED_MODULE_4__","_onResize","isTouchEvent","calculate","localX","localY","_ripple","centerX","centerY","enabled","dataset","previousPosition","ripples","isHiding","isRippleEnabled","rippleShow","touched","rippleHide","updateRipple","wasEnabled","removeListeners","_onScroll","handleGesture","touchstartY","touchendY","dirRatio","minDistance","_touchstart","_touchend","_touchmove","touchmoveY","createHandlers","_touchHandlers","_components_Vuetify__WEBPACK_IMPORTED_MODULE_1__","_components__WEBPACK_IMPORTED_MODULE_2__","_directives__WEBPACK_IMPORTED_MODULE_3__","dataIterator","rowsPerPageAll","pageText","noResultsText","nextPage","prevPage","dataTable","carousel","applicationable","_positionable__WEBPACK_IMPORTED_MODULE_0__","removeApplication","_components_VItemGroup_VItemGroup__WEBPACK_IMPORTED_MODULE_0__","isCssColor","colorName","colorModifier","_components_VBtn__WEBPACK_IMPORTED_MODULE_0__","_components_VIcon__WEBPACK_IMPORTED_MODULE_1__","_components_VSelect__WEBPACK_IMPORTED_MODULE_2__","_filterable__WEBPACK_IMPORTED_MODULE_3__","_themeable__WEBPACK_IMPORTED_MODULE_4__","_loadable__WEBPACK_IMPORTED_MODULE_5__","mustSort","rowsPerPageItems","customSort","isDescending","sortA","sortB","totalItems","searchLength","rowsPerPage","hasPagination","computedRowsPerPageItems","itemsLength","hasSearch","someItems","getPage","pageStart","pageStop","resetPagination","newItemKeys_1","updatePagination","updatedPagination","additionalFilterArgs","keyProp","noData","noResults","genPrevIcon","genNextIcon","genSelect","genPagination","rangeControls","openTimeout","closeTimeout","clearDelay","searchChildren","isDependent","openDependents","getClickableDependentElements","_bootable__WEBPACK_IMPORTED_MODULE_0__","validateAttachTarget","ELEMENT_NODE","hasDetached","initDetach","elevation","computedElevation","_registrable__WEBPACK_IMPORTED_MODULE_0__","Groupable","_components_VProgressLinear__WEBPACK_IMPORTED_MODULE_1__","_util_mask__WEBPACK_IMPORTED_MODULE_0__","dontFillMaskBlanks","returnMaskedValue","lazySelection","preDefined","setCaretPosition","updateRange","_positionable__WEBPACK_IMPORTED_MODULE_1__","_stackable__WEBPACK_IMPORTED_MODULE_2__","hasWindow","inputActivator","positionX","positionY","computedLeft","checkForWindow","absolutePosition","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","getRoundedBoundedClientRect","measure","sneakPeek","isShown","overlayOffset","overlayTimeout","overlayTransitionDuration","scrollListener","isContentEditable","checkPath","hasScrollbar","isInside","composedPath","anchorNode","_colorable__WEBPACK_IMPORTED_MODULE_0__","_components_VPicker__WEBPACK_IMPORTED_MODULE_0__","_colorable__WEBPACK_IMPORTED_MODULE_1__","_themeable__WEBPACK_IMPORTED_MODULE_2__","headerColor","noTitle","genPickerActionsSlot","availableProps","Proxyable","generateWarning","originalValue","_directives_ripple__WEBPACK_IMPORTED_MODULE_0__","_directives_ripple__WEBPACK_IMPORTED_MODULE_1__","nuxt","_components_VInput__WEBPACK_IMPORTED_MODULE_0__","_rippleable__WEBPACK_IMPORTED_MODULE_1__","_comparable__WEBPACK_IMPORTED_MODULE_2__","falseValue","trueValue","stackElement","stackExclude","zis","activeElements","functionalThemeClasses","Themeable","themeableProvide","rootIsDark","Toggleable","elOffsetTop","parallaxDist","percentScrolled","windowBottom","imgHeight","calcDimensions","_registrable__WEBPACK_IMPORTED_MODULE_1__","errorCount","errorMessages","successMessages","validateOnBlur","errorBucket","hasFocused","isResetting","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","validationTarget","genInternalMessages","internalMessages","_mixins_themeable__WEBPACK_IMPORTED_MODULE_0__","_mixins__WEBPACK_IMPORTED_MODULE_1__","fromXYZ","toXYZ","cielabForwardTransform","cbrt","cielabReverseTransform","xyz","transformedY","lab","Ln","srgbForwardMatrix","srgbForwardTransform","srgbReverseMatrix","srgbReverseTransform","colorToInt","intToHex","colorToHex","_console__WEBPACK_IMPORTED_MODULE_0__","hexColor","createMessage","$_alreadyWarned","generateComponentTrace","consoleInfo","newMessage","consoleWarn","consoleError","replacement","classifyRE","classify","formatComponentName","includeFile","file","currentRecursiveSequence","dedupeModelListeners","createSimpleFunctional","createSimpleTransition","createJavaScriptTransition","directiveConfig","addOnceEventListener","passiveSupported","addPassiveEventListener","getNestedValue","getObjectValueByPath","getPropertyFromItem","getZIndex","escapeHTML","filterObjectOnKeys","filterChildren","convertToUnit","remapInternalIcon","arrayDiff","getSlotType","mergeTransitions","transitions","hideOnLeave","leaveAbsolute","ourBeforeEnter","ourLeave","webkitTransformOrigin","testListenerOpts","tagsToReplace","ICONS_PREFIX","defaultDelimiters","isMaskDelimiter","allowedMasks","isMask","maskValidates","textIndex","maskIndex","rebuildFunctionalSlots","genStyles","genVariations","_colorUtils__WEBPACK_IMPORTED_MODULE_0__","_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__","_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__","isItem","genBaseColor","genVariantColor","variant","genColorVariableName","genColorVariable","cssVar","variablesCss","aColor","variants","i_1","variantValue","lighten","darken","applyMixin","vuexInit","store","$store","devtoolHook","devtoolPlugin","_devtoolHook","targetState","subscribe","mutation","subscribeAction","deepCopy","forEachValue","rawModule","_children","_rawModule","rawState","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","rawChildModule","isRegistered","Store","plugins","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","installModule","resetStoreVM","useDevtools","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerGetter","noNamespace","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","Animatable","beforeUpdate","afterUpdate","attrKV","addSelfToZr","removeClipPath","__clipTarget","removeSelfFromZr","addAnimator","removeAnimator","Draggable","GestureMgr","SILENT","makeEventPacket","eveType","targetInfo","topTarget","cancelBubble","gestureEvent","pinchX","pinchY","pinchScale","wheelDelta","zrDelta","stopEvent","EmptyProxy","handlerNames","painterRoot","_hovered","_lastTouchMoment","_gestureMgr","setHandlerProxy","isHover","isSilent","isOutsideBoundary","handlerInstance","lastHovered","lastHoveredTarget","hovered","hoveredTarget","setCursor","dispatchToElement","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","eventArgs","setCursorStyle","eventHandler","eventPacket","eachOtherLayer","layer","hoverCheckResult","processGesture","stage","gestureMgr","gestureInfo","recognize","_downEl","_downPoint","_upEl","Style","Pattern","returnFalse","createDom","newDom","newDomStyle","Layer","onselectstart","domBack","ctxBack","clearColor","motionBlur","lastFrameAlpha","__dirty","__used","__drawIndex","__startIndex","__endIndex","getElementCount","initContext","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","globalCompositeOperation","drawImage","clearRect","__canvasGradient","getGradient","getCanvasPattern","globalAlpha","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","tmpRect","viewRect","isDisplayableCulled","isClipPathChanged","clipPaths","prevClipPaths","doClip","setTransform","beginPath","restoreTransform","createRoot","domRoot","Painter","singleCanvas","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","_domRoot","_getSize","_hoverlayer","_hoverElements","isSingleCanvas","viewportRoot","paintAll","_redrawId","_paintList","_backgroundColor","refreshHover","__hoverMir","elMirror","__from","hoverElements","clearHover","hoverLayer","displayableSortFunc","getLayer","originalEl","invisible","invTransform","__clipPaths","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","eachBuiltinLayer","virtual","layerList","zi","useTimer","notClear","__dirtyText","dTime","prevElClipPaths","draw","currentLayer","forcePaint","beforeBrush","afterBrush","insertLayer","layersMap","prevLayer","eachLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","configLayer","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","imageLayer","renderToCanvas","displayList","whIdx","cwh","plt","prb","pathToImage","shadowBlurSize","hasStroke","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","ImageShape","imgShape","shapeCompareFunc","Storage","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","roots","_updateAndAddDisplayable","userSetClipPath","currentClipPath","parentClipPath","addRoot","__storage","addChildrenToStorage","addToStorage","delRoot","delChildrenFromStorage","delFromStorage","_renderList","_event","Dispatcher","Animator","Animation","onframe","_clips","_running","_time","_pausedTime","_pauseStart","_paused","addClip","animator","clips","getClips","removeClip","deferredEvents","deferredClips","_needsRemove","fire","_startLoop","pause","resume","Clip","arraySlice","defaultGetter","defaultSetter","interpolateNumber","interpolateString","interpolateArray","arrDim","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isArraySame","catmullRomInterpolateArray","p3","catmullRomInterpolate","cloneValue","rgba2String","getArrayDim","keyframes","createTrackClip","oneTrackDone","forceAnimate","_getter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","lastFrame","lastFramePercent","life","_delay","ondestroy","_tracks","_clipCount","_doneList","_onframeList","_clipList","tracks","isPaused","_doneCallback","doneList","lastClip","clipCount","oldOnFrame","forwardToLast","clipList","easingFuncs","_life","_initialized","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","msRequestAnimationFrame","debugMode","normalizeRadian","PI2","containStroke","anticlockwise","curve","x0","y0","x3","y3","cubicProjectPoint","PathProxy","cubic","quadratic","windingLine","CMD","EPSILON","isAroundEqual","extrema","swapExtrema","windingCubic","nRoots","cubicRootAt","y0_","y1_","nExtrema","x_","cubicAt","cubicExtrema","windingQuadratic","quadraticRootAt","quadraticExtremum","y_","quadraticAt","windingArc","containPath","isStroke","yi","dTheta","_x","_curve","quadraticProjectPoint","imageHelper","retrieve3","textWidthCache","textWidthCacheCounter","TEXT_CACHE_MAX","STYLE_REG","DEFAULT_FONT","textLines","measureText","getRichTextRect","getPlainTextRect","contentBlock","parsePlainText","outerWidth","outerHeight","adjustTextX","adjustTextY","parseRichText","distance","halfHeight","adjustTextPositionOnRect","dummyStyle","prepareTruncateOptions","truncateSingleLine","maxIterations","cnCharWidth","ascCharWidth","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","getLineHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","matchedIndex","pushTokens","stlPadding","truncateWidth","truncateHeight","tokenStyle","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","findExistImage","isImageReady","paddingW","remianTruncWidth","isEmptyStr","strs","isLineHolder","tokensLen","makeFont","childOfName","_doAdd","addBefore","includeChildren","tmpMat","childRect","rb","lb","sx","sy","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","_track","pointPair","_doTrack","_recognize","trackItem","clientToLocal","recognizers","pinch","pinchEnd","pinchPre","pinchCenter","LinkedList","_len","linkedListProto","Entry","insertEntry","LRU","maxSize","_list","_maxSize","_lastRemovedEntry","LRUProto","put","leastUsedEntry","mathCos","mathSin","mathSqrt","mathAbs","hasTypedArray","notSaveData","_saveData","_ctx","_xi","_yi","_x0","_y0","_ux","_uy","_lineDash","_dashOffset","_dashIdx","_dashSum","setScale","segmentIgnoreThreshold","addData","exceedUnit","_needsDash","_dashedLineTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arcTo","toStatic","setLineDash","lineDashSum","setLineDashOffset","appendPath","appendSize","appendPathData","_expandData","_prevCmd","dash","dashSum","nDash","bezierLen","tmpLen","fromLine","fromCubic","fromQuadratic","fromArc","rebuildPath","ux","uy","fs","scaleX","scaleY","isEllipse","extremity","xDim","yDim","tx","ty","v2Create","v2DistSquare","distSquare","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero","onet","cubicDerivativeAt","disc","discSqrt","Y1","Y2","acos","ASqrt","cubicSubdivide","p01","p12","p23","p012","p123","p0123","d1","d2","quadraticDerivativeAt","quadraticSubdivide","_fourPointsTransform","buildTransformer","EVENT_SAVED_PROP","_calcOut","elFrom","inX","inY","transformCoordWithViewport","isCanvasEl","saved","prepareCoordMarkers","preparePointerTransformer","propLR","propTB","idxLR","idxTB","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","wx","getSystemInfoSync","os","touchEventsSupported","worker","detect","firefox","ie","edge","SVGRect","pointerEventsSupported","isDomLevel2","MOUSE_EVENT_REG","calculateZrXY","layerX","layerY","ey","getNativeEvent","isTouch","targetTouches","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","determinant","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","dest","mA","det","vh","srcPointX","srcPointY","pk","idStart","ArrayCtor","m1","m2","out0","out1","out2","out3","out4","out5","rad","aa","atx","ab","ad","aty","vx","vy","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","pivot","gallopLeft","lastOffset","maxOffset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","count1","count2","exit","_minGallop","customCursor","customDest","ts","minRun","BUILTIN_OBJECT","TYPED_ARRAY","objToString","nativeForEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","typeStr","isDom","targetProp","sourceProp","isBuiltInObject","targetAndSources","baseClazz","clazzPrototype","memo","value2","primitiveKey","HashMap","thisMap","concatArray","newArray","v2","lenSquare","lengthSquare","dot","distanceSquare","lerp","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","globalNativeListenerNames","eventNameFix","isPointerFromTouch","setTouchTimer","touching","touchTimer","markTouch","normalizeGlobalEvent","FakeGlobalEvent","isLocalEl","elTmp","fakeGlobalEventProto","localDOMHandlers","_mayPointerCapture","downPoint","togglePointerCapture","_pointerCapturing","toElement","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","_updatePathDirty","dirtyPath","__dirtyPath","getGlobalScale","createPathProxy","RectText","Displayable","dragging","globalScaleRatio","rectContain","transformCoordToLocal","animateStyle","addColorStop","_image","createOrUpdateImage","sWidth","sHeight","drawRectText","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","clearDisplaybles","addDisplayable","notPersistent","addDisplayables","displayables","localPos","globalCoord","pathContain","pathProxyForDraw","hasFill","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","strokeStyle","lineDashOffset","ctxLineDash","fillOpacity","originalGlobalAlpha","strokeOpacity","shapeCfg","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","getLineScale","defaultShape","thisShape","createPattern","fixShadow","_constant","ContextCachedBy","STYLE_COMMON_PROPS","createLinearGradient","canvasGradient","createRadialGradient","transformText","textOrigin","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","otherStyle","styleProto","textHelper","normalizeTextStyle","needDrawText","renderText","NONE","getStroke","PLAIN_TEXT","WILL_BE_RESTORED","shadowTemp","orignalBrush","SHADOW_PROPS","globalImageCache","newImageOrSrc","cachedImgObj","hostEl","cbPayload","__zrImageSrc","pendingWrap","imageOnLoad","__cachedImgObj","smoothSpline","smoothBezier","controlPoints","cp2","r2","r3","r4","v2Min","v2Max","v2Scale","v2Distance","v2Add","v2Clone","v2Sub","isLoop","constraint","prevPoint","nextPoint","cps","d0","segs","w2","w3","outputShape","inputShape","originX","originY","originWidth","originHeight","positiveOrNegative","doubledPosition","roundRectHelper","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","renderRichText","renderPlainText","needDrawBg","needDrawBackground","checkCache","cachedByMe","styleFont","computedFont","__computedFont","__styleFont","__textCotentBlock","boxPos","getBoxPosition","baseX","baseY","applyTextRotation","boxY","textX","boxX","drawBackground","getTextXForPadding","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","getFill","strokeText","drawRichText","xLeft","lineTop","xRight","tokenCount","usedWidth","lineXLeft","lineXRight","placeToken","setCtx","isPlainBg","onBgImageLoaded","unitX","unitY","someVectorAt","isTangent","cpx2","cpy2","cpx1","cpy1","pointAt","tangentAt","ox","oy","_subPixelOptimize","subPixelOptimizeOutputShape","polyHelper","animatable","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","_y","dropTarget","lastDropTarget","_dropTarget","arrySlice","eventProcessor","_$handlers","_$eventProcessor","eventful","callAtLast","lastWrap","newList","argLen","hItem","triggerWithContext","mIdentity","transformableProto","scaleTmp","parentHasTransform","relX","relY","tmpTransform","originTransform","setLocalTransform","transformCoordToGlobal","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","rgbaArr","ep","fname","hsla2rgba","iv","hsla","rgba2hsla","vMin","vMax","deltaR","deltaG","deltaB","fastLerp","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","Ellipse","DILIMITER_REG","DOMParser","parseFromString","SVGParser","_isDefine","_isText","xml","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parentGroup","defineParsers","nodeParsers","_parseText","_textX","_textY","inheritStyle","ellipse","parsePoints","_parseGradientColorStops","stopColor","__inheritedStyle","pointsString","attributesMap","defs","onlyInlineStyle","zrStyle","isTextEl","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","elFillProp","elStrokeProp","getPaint","elPropName","urlRegex","urlMatch","transformRegex","transformOps","styleRegex","styleRegResult","styleList","viewBoxScale","viewBoxPosition","parseSVG","transformPath","vMag","vRatio","vAngle","processArc","psiDeg","xp","yp","cxp","cyp","commandReg","numberReg","createPathProxyFromString","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","createPathOptions","pathProxy","pathEls","pathBundle","mathAtan2","nPoint","HandlerProxy","useVML","painterCtors","ZRender","getInstance","registerPainter","delInstance","rendererType","vml","handerProxy","_needsRefresh","oldDelFromStorage","oldAddToStorage","zLevel","_needsRefreshHover","triggerRendered","refreshHoverImmediately","clearAnimation","isCallable","tryToString","$TypeError","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","DESCRIPTORS","SILENT_ON_NON_WRITABLE_LENGTH_SET","uncurryThis","stringSlice","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","createPropertyDescriptor","bitmap","makeBuiltIn","defineGlobalProperty","unsafe","nonConfigurable","nonWritable","fails","documentAll","IS_HTMLDDA","EXISTS","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","TARGET","STATIC","stat","dontCallGetSet","forced","sham","NATIVE_BIND","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","aFunction","aCallable","isNullOrUndefined","globalThis","classof","$Object","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","enforce","getterFor","TYPE","facade","STATE","$documentAll","detection","POLYFILL","NATIVE","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","trunc","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","enumBugKeys","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","SHARED","IS_PURE","copyright","license","V8_VERSION","toIntegerOrInfinity","IndexedObject","requireObjectCoercible","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","NATIVE_SYMBOL","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","argCount"],"sourceRoot":""}